2012-12-25 41 views
0
import multiprocessing as mlp 

class Test(mlp.Process): 
    def run(self): 
     if self.name == "Test-2": 
      import time 
      time.sleep(4) 
     print self.name 

jobs = [] 
for i in range(5): 
    m = Test() 
    jobs.append(m) 
    m.run() 
for i in jobs: 
    i.join() 

在上面的代碼,輸出始終爲: 試驗-1 試驗-2 試驗-3 試驗4 試驗5多重處理的Python不平行工作

以及這些方法產卵只有一個之後。像Test-3只有在Test-2完成後才能跨越。它們不應該平行發生嗎?

而且也i.join()拋出錯誤:Asse田:只能加入一個啓動的過程

什麼錯誤我在做???

謝謝...

+1

如果有人正確回答您的問題,請點擊旁邊的空白複選標記以將答案標記爲正確。它的顏色應該變成綠色。 –

回答

2

您從未開始過程。 run方法是爲子類實現的,您已正確執行該方法,但start方法是您應該調用以啓動該進程(並在其他進程實例中自動執行run())的方法。

換句話說,撥打m.start()而不是m.run()

+0

感謝很多人,這解決了我的問題...:D –

+0

我試過了,很遺憾,我沒有15分,因爲我在這裏是新的...所以它不接受我的投票... :( –

+1

哦哦!並完成...感謝您指導我......未知的水域,你知道......:D –