2012-12-09 38 views
3

我是新来的多处理,并试图使用multiprocessing.Process类,而不是threading.Thread类的项目,因为他们显然有相同的变量,但即使我复制this代码,运行()似乎并没有工作......这可能与python版本或丢失的文件?multiprocessing.process子类不工作

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

我发现了其他的例子,但仍不明白,请帮助。

+0

适用于我(python 2.7.3,ubuntu64)。从命令行运行'python 001.py'。你如何运行它? –

回答

1

基本相同您的代码有两个问题。

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

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