为了账号安全,请及时绑定邮箱和手机立即绑定

使用多处理Pool.map()时不能class=‘class 3’>选择

使用多处理Pool.map()时不能class=‘class 3’>选择

慕勒3428872 2019-06-15 13:01:03
使用多处理Pool.map()时不能class=‘class 3’>选择我试着用multiprocessing氏Pool.map()功能同时分工。当我使用以下代码时,它工作得很好:import multiprocessingdef f(x):     return x*xdef go():     pool = multiprocessing.Pool(processes=4)             print pool.map(f, range(10))if __name__== '__main__' :     go()然而,当我在一种更面向对象的方法中使用它时,它就不起作用了。它给出的错误消息是:PicklingError: Can't pickle <type 'instancemethod'>: attribute lookup __builtin__.instancemethod failed当以下是我的主程序时,就会发生这种情况:import someClassif __name__== '__main__' :     sc = someClass.someClass()     sc.go()以下是我的someClass班级:import multiprocessingclass someClass(object):     def __init__(self):         pass     def f(self, x):         return x*x    def go(self):         pool = multiprocessing.Pool(processes=4)                print pool.map(self.f, range(10))谁知道问题可能是什么,或者是一个简单的解决方法?
查看完整描述

3 回答

?
一只斗牛犬

TA贡献1784条经验 获得超2个赞

您还可以定义__call__()方法在您的someClass(),这就叫someClass.go()然后传递一个someClass()去游泳池。这个东西是可摘的,它工作得很好(对我来说).


查看完整回答
反对 回复 2019-06-15
  • 3 回答
  • 0 关注
  • 509 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信