python多处理 - 访问使用Process.start调用的函数内的进程名称(target = func)

Anu*_*har 7 python inheritance multiprocessing

我正在玩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()
Run Code Online (Sandbox Code Playgroud)

但是,如果我使用Process类的构造函数创建进程

from multiprocessing import Process
def somefunc():
    print Process.name                 #1

p = Process(target=somefunc)
p.start()
print p.name                           #2
Run Code Online (Sandbox Code Playgroud)

#2有效但#1没有.有没有办法可以在里面打印当前正在执行的进程的名称somefunc

sch*_*mar 11

你可以使用这个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
Run Code Online (Sandbox Code Playgroud)

  • 好吧,现在在文档中搜索 current_process 我在 http://docs.python.org/library/multiprocessing.html#miscellaneous 猜测中找到了该方法,我需要对 RTFM 多一点耐心和专注:) (2认同)