我知道在多线程中,有一个枚举方法,我可以用它来获取所有当前运行的线程的名称。但是对于多处理,在非池类进程调用中等效的是什么:
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文档中的这一点:
调用这个函数有"加入"任何已经完成的进程的副作用