2015-06-27 39 views
1

我已經搜索瞭如何做到這一點,我沒有找到它。我想有人會給我一個鏈接到谷歌搜索,但我真的不知道究竟要尋找什麼。我試圖在一個類的方法中使用python中的Multiprocessing。該方法具有「自我」 ARG,但即使我通過它,我得到一個錯誤,說我不提供它:自己在多處理python

代碼:

def move_one_particle(self, moving_way): 

def move(self, moving_way): 
    for dummy_time in range(self.num_particles): 
     p=mp.Process(target=self.move_one_particle, args=(moving_way)) 
     p.start() 
     p.join() 

輸出:

move_one_particle() takes exactly 2 arguments (1 given) 
+0

我也嘗試過args =(self,moving_way)並且輸出相同 –

+0

這個方法是類的一部分嗎? – nalyd88

+0

是的,對不起!我以爲我已經預測了它 –

回答

2

這只是一個元組。當你寫

(moving_away) 

它不是一個元組。然而,

(moving_away,) 

是。請參閱Python wiki on this point


這是您的問題的模型,我的作品。

class Foo(object): 
    def bar(self, baz): 
     print baz 

    def shmo(self): 
     p = multiprocessing.Process(target=self.bar, args=(3,)) 
     p.run() 

>> Foo().shmo() 
3 
+0

哇,我不能相信我錯過了「功能」這是醜陋的語法,和一個容易犯的錯誤。 – BlackVegetable

+0

@BlackVegetable是的,有些人[不喜歡它](http://bugs.python.org/issue2817)。 –

+0

這似乎是爲了一致性一個空元組應該是'(,)',哦。 – BlackVegetable