Python 检查当前进程/线程是否为主进程/线程的正确方法是什么?

Python 检查当前进程/线程是否为主进程/线程的正确方法是什么?,python,Python,生成多个线程时,我可以执行以下操作来检查该线程是否为主线程: isinstance(threading.currentThread(), threading._MainThread) 但是此方法依赖于线程包的“受保护”成员,并且在多处理库中没有类似的类型可供导入,因此,检查当前进程是否为主进程(以及对线程执行相同操作)的正确方法是什么 我现在是这样做的: multiprocessing.current_process().name == 'MainProcess' 但是这些名字可靠吗?这一个

生成多个线程时,我可以执行以下操作来检查该线程是否为主线程:

isinstance(threading.currentThread(), threading._MainThread)
但是此方法依赖于线程包的“受保护”成员,并且在多处理库中没有类似的类型可供导入,因此,检查当前进程是否为主进程(以及对线程执行相同操作)的正确方法是什么

我现在是这样做的:

multiprocessing.current_process().name == 'MainProcess'

但是这些名字可靠吗?

这一个似乎更可靠:

assert threading.current_thread() == threading.main_thread()
因为它不依赖于静态文本

对于进程,执行
process.name==“MainProcess”
是不可靠的。您应该这样做:

import re

def is_main_process(process_name):
    return not bool(re.match(r'Process-\d+', process_name))

原因是保证子进程的名称采用这种格式:
Process-N

太好了!但是有没有办法对流程执行相同的操作?在这里的官方文档中找到了对多处理部分的确认(您也可以在构造函数中提供子流程
名称