2015-06-27 37 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