【问题标题】:multiprocessing.process subclass does not workmultiprocessing.process 子类不起作用
【发布时间】:2012-12-09 01:55:16
【问题描述】:

我是多处理的新手,我正在尝试在项目中使用 multiprocessing.Process 类而不是 threading.Thread 类,因为它们显然具有相同的变量,但是即使我复制了 this 代码,run( ) 似乎不起作用...这可能与 python 版本或缺少文件有关吗?

import multiprocessing

class Worker(multiprocessing.Process):
    def run(self):
        print 'In %s' % self.name
        return

if __name__ == '__main__':
    jobs = []
    for i in range(5):
        p = Worker()
        jobs.append(p)
        p.start()
    for j in jobs:
        j.join()

我找到了其他例子,但还是不明白,请帮忙。

【问题讨论】:

  • 为我工作(python 2.7.3,ubuntu64)。从命令行以“python 001.py”运行。你是如何运行它的?

标签: python inheritance multiprocessing


【解决方案1】:

这是因为多处理和线程模块之间的差异。这个问题和Child processes created with python multiprocessing module won't print基本一致

【讨论】:

    【解决方案2】:

    您的代码有两个问题。

    1. 您需要从您的 Worker 类中调用 Process.__init__。目前,您的派生类中没有__init__ 函数。除非您这样做,否则任何事情都不会正常工作。

    2. 传达要执行的代码的首选方式不是直接覆盖run(),而是使用target= 参数到Process。这允许Process 在新进程中将参数传递给您的代码。有关所有血腥细节,请参阅multiprocessing.Process 的文档。

    【讨论】:

      猜你喜欢
      • 2012-01-19
      • 2022-10-13
      • 2023-03-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多