【问题标题】:Kill process using another process python multiprocessing使用另一个进程 python multiprocessing 杀死进程
【发布时间】:2014-03-23 18:25:20
【问题描述】:

我正在尝试在 Python 中创建一个脚本。这个想法是启动 3 个进程,其中 2 个不断打印一条消息,第三个在几秒钟后杀死它们。问题是我不知道如何告诉第三个应该终止哪些进程。

from multiprocessing import *
import time

def OkreciLevi():
   while 1:
       print "okrecem levi"
       time.sleep(3)

def OkreciDesni():
   while 1:
       print "okrecem desni"
       time.sleep(3)

def Koci(levi,desni):
   for vrednost in range(2):
       print str(vrednost)
       time.sleep(3)
   levi.terminate()
   desni.terminate()
   print "kocim"

if __name__== '__main__':
   levi=Process(target=OkreciLevi)
   desni=Process(target=OkreciDesni)
   koci=Process(target=Koci, args=(levi,desni))
   koci.start()
   levi.start()
   desni.start()
   levi.join()
   desni.join()
   koci.join()

【问题讨论】:

  • 另外,为什么不能使用一个队列,或者两个队列?
  • 我是塞尔维亚人,习惯用塞尔维亚语写函数名。对不起。

标签: python multiprocessing


【解决方案1】:

假设您使用的是类似 *nix 的操作系统,我猜您需要:

  1. 多处理工作者的Get the PID
  2. 发送SIGTERM 给他们。例如使用os.kill

this information 也可能对您有用。

【讨论】:

  • 我尝试使用 SIGTERM 但它无法识别 signal.SIGTERM 所以我想是否有其他方法可以做到这一点。另一个问题是从进程 levi 和 desni 获取 PID 到进程 koci。
  • @JaSamSale,将您的代码发布到任何在线服务(例如pastebin.com),我们将尝试找到解决方法。
  • 我找到了一种解决方法,但现在我想知道为什么这不起作用。
最近更新 更多