multiprocessing.process子类不起作用

时间:2012-12-09 01:55:17

标签: python inheritance multiprocessing

我是多处理的新手,我正在尝试使用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()

我找到了其他例子,但仍然不明白这一点,请帮助。

2 个答案:

答案 0 :(得分:1)

这是因为多处理和线程模块之间存在差异。此问题与Child processes created with python multiprocessing module won't print

基本相同

答案 1 :(得分:1)

您的代码存在两个问题。

  1. 您需要从Worker类中调用Process.__init__。您目前在派生类中没有__init__函数。在你这样做之前,没有什么能正常工作。

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