Python多进程:主进程的名称

Python多进程:主进程的名称,python,python-2.7,python-multiprocessing,Python,Python 2.7,Python Multiprocessing,我使用多处理模块在不同的进程上运行一段代码。 在代码中的某个时刻,我需要知道代码是由主进程执行还是由一个创建的子进程执行 在我尝试过的所有情况下,当前进程的名称始终为“MainProcess”: 这是一个python约定吗?我可以依靠它来确保我的代码由主进程运行(假设没有其他进程以这种方式命名)? 否则,有没有其他方法可以让我知道哪个进程正在执行一段代码 谢谢 看来主进程的类型与子进程不同。主进程是mulitprocessing.process.\u MainProcess,而子进程是multi

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

在我尝试过的所有情况下,当前进程的名称始终为“MainProcess”:

这是一个python约定吗?我可以依靠它来确保我的代码由主进程运行(假设没有其他进程以这种方式命名)? 否则,有没有其他方法可以让我知道哪个进程正在执行一段代码


谢谢

看来主进程的
类型与子进程不同。主进程是
mulitprocessing.process.\u MainProcess
,而子进程是
multiprocessing.process.process
。这可能是一种更好的测试方法


现在,由于
\u MainProcess
类型的名称有一个前导下划线,因此它应该是“private”,这意味着它是一个可以更改的实现细节。这似乎不太可能,但您可以检查当前进程是否不是
process
类型,而不是检查它是否是
\u MainProcess

类型,尽管可以使用
多处理
。 对于主进程,它将返回
None


它是在Python3.8中添加的,因此在提出问题时不可用。

我看到主进程的类型与子进程的类型不同。这可能是一种更好的测试方法。
>>类型(多处理.当前进程())
多处理.进程。
>类型(进程())
多处理.进程.进程
这看起来是一个可以接受的答案。你应该把它作为一个答案而不是评论,这样我就可以接受了。这回答了你的问题吗?不过需要注意的是:
\u MainProcess
类继承自
进程
,这使得
成为instance(multiprocessing.current\u Process(),multiprocessing.Process)
从主进程和子进程返回
True
。解决方案使用的是
类型(multiprocessing.current_process())==multiprocessing.process
,因为这不是检查父类的类型。
>>> import multiprocessing
>>> multiprocessing.current_process().name
'MainProcess'