python multiprocessing - 在使用 Process.start(target=func) 调用的函数中访问进程名称

标签 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()

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

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

p = Process(target=somefunc)
p.start()
print p.name                           #2

#2 有效但#1 无效。有没有办法在 somefunc 中打印当前正在执行的进程的名称?

最佳答案

您可以使用 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

关于python multiprocessing - 在使用 Process.start(target=func) 调用的函数中访问进程名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11535984/

相关文章:

python - 将复选框数据发布到 Django 中的 View

python - 为什么这个python程序有时会退出失败?

java - 为什么子类对象使用父类方法会导致错误?

caching - 使用 MESI 协议(protocol),写入命中也会使处理器停止运行,对吗?

python - 使用 Python 和 Caffe 进行多处理

python - 使用 'fixed points' 在 Python 中插入数据

Python用户定义的模块在哪里导入系统模块

java - 在java方法重写中使用通配符

c++ - Visual Studio 2017 警告说异常被基类捕获,但事实并非如此

multithreading - 在 SLURM 环境中运行 FFMPEG 多线程