使用python多进程,子进程如何终止另一个子进程?

2024-10-02 22:25:26 发布

您现在位置:Python中文网/ 问答频道 /正文

我的主应用程序进程创建了两个子进程。你知道吗

A = Process(target=a, args=(aaa,))

B = Process(target=b,args=())

为了论证,它们被称为A和B;进程A如何终止进程B?你知道吗


Tags: 应用程序target进程argsprocessaaa论证
1条回答
网友
1楼 · 发布于 2024-10-02 22:25:26

虽然我不建议子进程能够相互核攻击。就我个人而言,我会让主进程管理子进程。你知道吗

如果你想沿着你现在的路线走。一种方法是让主进程将child A的进程id传递给child 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: 为此,可以使用队列或管道(来自multiprocessing library)。你知道吗

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()

相关问题 更多 >