3

我是多处理的新手,我正在尝试对项目使用 multiprocessing.Process 类而不是 threading.Thread 类,因为它们显然具有相同的变量,但是即使我复制了这段代码,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()

我找到了其他示例,但仍然不明白,请帮助。

4

2 回答 2

1

这是因为多处理和线程模块之间的差异。这个问题与使用 python 多处理模块创建的子进程基本相同不会打印

于 2012-12-09T02:06:51.597 回答
1

您的代码有两个问题。

  1. 您需要Process.__init__从您的 Worker 类中调用。目前,您的派生类中没有__init__函数。在您执行此操作之前,任何事情都不会正常工作。

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

于 2013-07-23T01:52:24.287 回答