![](/img/trans.png)
[英]python multiprocessing.Process.terminate - How to kill child processes
[英]With python multiprocessing how can child process terminate another child process?
我的主應用程序進程創建了兩個子進程。
A = Process(target=a, args=(aaa,))
B = Process(target=b,args=())
為了爭論起見,它們被稱為A和B。 進程A如何終止進程B?
雖然我將嚴重建議子進程之間不互相推薦。 就我個人而言,我將擁有管理子流程的主要流程。
如果您想沿着當前路線行駛, 一種您可以做的事情的方法是獲取主進程,以將子進程A
的進程ID傳遞給子進程B
(或您想要執行的操作)。 使用此流程ID,您可以將其傳遞給流程,然后可以終止該流程。
選項1:如果只有一個進程可以終止另一個進程,那么最簡單的解決方案是首先啟動進程B
然后,要讓進程A
傳遞進程B
的進程ID。 使用它可以終止進程。
def a(pid):
os.kill(pid)
B = Process(target=b, args=())
A = Process(target=a,args=(B.pid))
選項2:為此,您可以使用Queues或Pipes(來自multiprocessing庫 )。
from multiprocessing import Process, Queue
def f(q):
# will send the process id of the alternative child process
print q.get()
if __name__ == '__main__':
queue_A = Queue()
queue_B = Queue()
A = Process(target=f, args=(queue_A,))
B = Process(target=f,args=(queue_B,))
A.start()
B.start()
queue_A.put(B.pid)
queue_B.put(A.pid)
# do stuff....
選項3(我的首選方法):獲取主進程以執行終止操作。
A = Process(target=a, args=())
B = Process(target=b,args=())
A.terminate()
B.terminate()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.