我正在嘗試創建一個程序使用多個進程,我想幹淨地終止所有派生進程,如果發生錯誤。下面我寫了一些僞類型代碼,我認爲我需要做的事情,但我不知道什麼是最好的方法是與所有進程通信,發生錯誤,並且應該終止。乾淨的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