我正在尝试创建一个程序使用多个进程,我想干净地终止所有派生进程,如果发生错误。下面我写了一些伪类型代码,我认为我需要做的事情,但我不知道什么是最好的方法是与所有进程通信,发生错误,并且应该终止。干净的Python多进程终止依赖于退出标志
我认为我应该为这类事情使用类,但是我对Python很陌生,所以我只是试图让我的头在基础知识第一。
#imports
exitFlag = True
# Function for threads to process
def url_thread_worker():
# while exitFlag:
try:
# do something
except:
# we've ran into a problem, we need to kill all the spawned processes and cleanly exit the program
exitFlag = False
def processStarter():
process_1 = multiprocessing.Process(name="Process-1", target=url_thread_worker, args=())
process_2 = multiprocessing.Process(name="Process-2", target=url_thread_worker, args=())
process_1.start()
process_2.start()
if __name__ == '__main__':
processStarter()
在此先感谢
这是一个很好的例子,帮助了很多。非常感谢你。 –
你选择了处理“容易的部分” - 当孩子死亡。但是,如果父母死了呢?比你会留下孤立的进程(工人)。至少对我而言,这是一个大问题。 –
这是一个非常不同的情况下解决,而不是真正常见的,恕我直言。您应该对系统进行编码以确保父代对错误具有适应性,并且至少可以在出现问题时终止子进程。 – abranches