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