Python多处理:主进程的名称

时间:2015-06-11 20:20:15

标签: python python-2.7 python-multiprocessing

我使用多处理模块在不同的进程上运行一段代码。 在代码中的某个时刻,我需要知道代码是由主进程还是正在创建的子进程之一执行的。

在我尝试的所有情况下,当前流程的名称始终是" MainProcess":

>>> import multiprocessing
>>> multiprocessing.current_process().name
'MainProcess'

这是一个我可以依赖的python约定,以确保我的代码片段由主进程运行(假设没有其他进程以这种方式命名)? 否则,我是否应该使用任何其他方式来了解哪个进程正在执行一段代码?

谢谢!

2 个答案:

答案 0 :(得分:1)

主流程似乎与子流程不同type。主要流程为mulitprocessing.process._MainProcess,而子流程为multiprocessing.process.Process。这可能是测试它的更好方法。

现在,由于_MainProcess类型的名称具有前导下划线,因此它意味着“私有”,这意味着它是可以更改的实现细节。这似乎不太可能,但您可以检查当前进程是否类型为Process,而不是检查它是否为_MainProcess类型。< / p>

答案 1 :(得分:1)

虽然可以使用 multiprocessing.current_process(),但使用 multiprocessing.parent_process() 或许是更好的选择。 对于主进程,它将返回 None

它是在 Python 3.8 中添加的,因此在提出问题时不可用。