我正在使用python多处理模块,并希望能够显示当前正在执行的进程的名称。
如果我创建一个继承自multiprocessing.Process的自定义MyProcess类,我可以按以下方式打印进程的名称
from multiprocessing import Process
class MyProcess(Process):
def __init__(self):
Process.__init__(self)
def run(self):
#do something nasty and print the name
print self.name
p = MyProcess()
p.start()
但是,如果我使用Process类的构造函数
创建进程from multiprocessing import Process
def somefunc():
print Process.name #1
p = Process(target=somefunc)
p.start()
print p.name #2
#2有效,但#1没有。有没有办法可以在somefunc
内打印当前正在执行的进程的名称?
答案 0 :(得分:10)
您可以使用current_process
功能:
from multiprocessing import Process, current_process
def somefunc():
print current_process().name
if __name__ == '__main__':
p = Process(target=somefunc)
p.start()
print p.name
答案 1 :(得分:3)
不是传递target
参数,而是覆盖run
方法。从那里,您可以调用someFunc
并将流程对象传递给它。
该名称不是操作系统级别的概念。它是Python级别,你执行的进程甚至在任何地方都有一个Process
对象,这不是自动的。