如何从python的multiprocessing模块中获取当前运行的进程名



我知道在多线程中,有一个枚举方法,我可以用它来获取所有当前运行的线程的名称。但是对于多处理,在非池类进程调用中等效的是什么:

p1 = multiprocessing.Process(name='P1',
target=self.get_data,
args=(url,))
例如,如果我创建了上面的进程,并像上面那样使用'P2'创建了另一个进程,那么所需的代码片段应该返回P1和P2

可以使用返回multiprocessing.Process对象列表的multiprocessing.active_children()

例如:

for p in multiprocessing.active_children():
print(f"child {p.name} is PID {p.pid}")

如果您没有使用name=参数到Process(),则默认名称为,例如Process-1,Process-2等。

请注意,这与threading.enumerate()有相同的限制,因为它只标识已使用.start()启动但尚未终止的进程。

还请注意Python文档中的这一点:

调用这个函数有"加入"任何已经完成的进程的副作用

相关内容

  • 没有找到相关文章

最新更新