Я пишу скрипт на python, который имеет 2 дочерних процесса.Основная логика происходит в одном процессе, и другой процесс ждет некоторое время, а затем убивает основной процесс, даже если логика не выполнена.
Я прочитал, что вызов os_exit (1) останавливает интерпретатор, поэтому весь сценарийубит автоматически.Я использовал его, как показано ниже:
import os
from multiprocessing import Process, Lock
from multiprocessing.sharedctypes import Array
# Main process
def main_process(shared_variable):
shared_variable.value = "mainprc"
time.sleep(20)
print("Task finished normally.")
os._exit(1)
# Timer process
def timer_process(shared_variable):
threshold_time_secs = 5
time.sleep(threshold_time_secs)
print("Timeout reached")
print("Shared variable ",shared_variable.value)
print("Task is shutdown.")
os._exit(1)
if __name__ == "__main__":
lock = Lock()
shared_variable = Array('c',"initial",lock=lock)
process_main = Process(target=main_process, args=(shared_variable))
process_timer = Process(target=timer_process, args=(shared_variable))
process_main.start()
process_timer.start()
process_timer.join()
Процесс таймера вызывает os._exit, но сценарий все еще ждет, пока основной процесс напечатает "Task finished normally."
, прежде чем выйти.
Как сделатьЯ делаю так, чтобы при выходе из процесса таймера вся программа выключалась (включая основной процесс)?
Спасибо.