【问题标题】:self in multiprocessing python [closed]多处理python中的自我[关闭]
【发布时间】:2015-09-14 12:00:06
【问题描述】:

我已经搜索了如何执行此操作,但没有找到。我想有人会给我一个谷歌搜索的链接,但我真的不知道到底要找什么。我正在尝试在 python 中使用 Multiprocessing 和类的方法。此方法具有“self”参数,但即使我通过它,我也会收到一条错误消息,说我没有提供它:

代码:

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)

【问题讨论】:

  • 我也尝试过 args=(self,moving_way) 并具有相同的输出
  • 这个方法是类的一部分吗?
  • 是的,对不起!我以为我已经预料到了
  • 如前所述,我无法重现此错误。您是否向我们展示了编写的代码? (例如,您的 move_one_particle 函数目前是语法错误。)
  • 其实我没有写完全一样的。我做了target=move_one_particle, args=(self, moving_way),它奏效了。

标签: python class methods multiprocessing self


【解决方案1】:

这只是一个元组。当你写

(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

【讨论】:

  • 哇,我简直不敢相信我错过了那个“功能” 那是丑陋的语法,而且很容易犯错误。
  • @BlackVegetable 是的,有些人don't like it
  • 为了保持一致性,一个空元组似乎应该是(,),哦,好吧。
  • @BlackVegetable 不确定我是否同意最后一点。
  • 问题是我输入了 move_one_particle() 并且它没有括号。修复后元组的事情给了我一个错误,所以谢谢=)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-11-19
  • 2016-05-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多