我通過以下方式解決了我的問題:
最初我負責研究。每項研究都是一個獨立的過程。我的問題是,我希望這些程序在某個逾時後自行“死亡”。我不能對每個程序執行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}$
我不是一個程式員,是以這可能不是一個優雅的解決方案,雖然它的工作像一個奇迹!謝謝你的建議。在