首页 > 解决方案 > 如何从python中的多处理模块获取当前正在运行的进程名称

问题描述

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

p1 = multiprocessing.Process(name='P1',
                    target=self.get_data,
                    args=(url,))

例如,如果我创建了上述进程,以及上面使用“P2”的另一个进程,那么所需的代码段应该返回 P1 和 P2

标签: pythonpython-3.xmultiprocessingpython-multiprocessing

解决方案


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

例如:

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

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

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

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

调用它具有“加入”任何已经完成的进程的副作用


推荐阅读