Python multiprocessing: 主进程的名称
Python multiprocessing: name of the main process
我正在使用多处理模块 运行 不同进程上的一段代码。
在代码中的某个点,我需要知道代码是由主进程还是由创建的子进程之一执行的。
在我尝试过的所有情况下,当前进程的名称总是 "MainProcess":
>>> import multiprocessing
>>> multiprocessing.current_process().name
'MainProcess'
这是我可以依赖的 python 约定来确保我的代码片段是 运行 由主进程(假设没有其他进程以这种方式命名)吗?
否则,有没有其他方法可以知道哪个进程正在执行一段代码?
谢谢!
看来主进程与子进程有不同的type
。主进程是 mulitprocessing.process._MainProcess
,而子进程是 multiprocessing.process.Process
。这可能是更好的测试方法。
现在,由于 _MainProcess
类型的名称有一个前导下划线,所以它应该是 "private,",这意味着它是一个可以更改的实现细节。这似乎不太可能,但您可以检查当前进程是否 not 类型 Process
而不是检查它是否类型 _MainProcess
.
虽然可以使用 multiprocessing.current_process()
,但也许更好的替代方法是使用 multiprocessing.parent_process()
。
对于主进程,它将return None
.
它是在 Python 3.8 中添加的,因此在提出问题时不可用。
我正在使用多处理模块 运行 不同进程上的一段代码。 在代码中的某个点,我需要知道代码是由主进程还是由创建的子进程之一执行的。
在我尝试过的所有情况下,当前进程的名称总是 "MainProcess":
>>> import multiprocessing
>>> multiprocessing.current_process().name
'MainProcess'
这是我可以依赖的 python 约定来确保我的代码片段是 运行 由主进程(假设没有其他进程以这种方式命名)吗? 否则,有没有其他方法可以知道哪个进程正在执行一段代码?
谢谢!
看来主进程与子进程有不同的type
。主进程是 mulitprocessing.process._MainProcess
,而子进程是 multiprocessing.process.Process
。这可能是更好的测试方法。
现在,由于 _MainProcess
类型的名称有一个前导下划线,所以它应该是 "private,",这意味着它是一个可以更改的实现细节。这似乎不太可能,但您可以检查当前进程是否 not 类型 Process
而不是检查它是否类型 _MainProcess
.
虽然可以使用 multiprocessing.current_process()
,但也许更好的替代方法是使用 multiprocessing.parent_process()
。
对于主进程,它将return None
.
它是在 Python 3.8 中添加的,因此在提出问题时不可用。