2012-12-09 43 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的文檔。