天天看點

python為什麼會出現無響應怎麼辦,Python多進行中無響應程序的終止

我通過以下方式解決了我的問題:

最初我負責研究。每項研究都是一個獨立的過程。我的問題是,我希望這些程序在某個逾時後自行“死亡”。我不能對每個程序執行p.join(timeout)後的y p.terminate(),因為這樣會進入主循環并延遲新程序的啟動,直到前一個程序不存在為止。在

解決方案是引入一個層次結構,其中p.start()不直接啟動我感興趣的程序(“myprocess”),而是另一個負責終止的程序。我叫它“多迪”:jobs = [] # this list will contain all jobs

for i in studies: # we will call as many processes as elements in studies

arguments = (i) # my arguments

p = multiprocessing.Process(target = dordie, args = arguments)

jobs.append(p) # list of jobs

p.start() # start process

“dordie”負責啟動每個“myprocess”并在上面的“for”循環之外殺死每個程序,這樣可以確定無論啟動多少個程序,它們總是比内部寫死的逾時時間更早死亡,但同時,沒有什麼可以阻止啟動更多的程序。在

^{pr2}$

我不是一個程式員,是以這可能不是一個優雅的解決方案,雖然它的工作像一個奇迹!謝謝你的建議。在