猿问

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

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

我试着用multiprocessingPool.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))

谁知道问题可能是什么,或者是一个简单的解决方法?


慕勒3428872
浏览 510回答 3
3回答

一只斗牛犬

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

相关分类

Python
我要回答