3

マルチプロセッシングを介してクラスメソッドを使用してコードを並列化しようとしています。基本的な構造は次のとおりです。

# from multiprocessing import Pool
from pathos.multiprocessing import ProcessingPool as Pool

class myclass(object):
    def __init__(self):
        #some code
    def mymethod(self):
        #more code
        return another_instance_of_myclass



def myfunc(myinstance,args):
    #some code   
    test=myinstance.mymethod()
    #more code
    return myresult #not an instance,just a number

p=Pool()

result = p.map(myfunc,listwithdata)

これが通常のマルチプロセッシングで失敗した後、Pickle とマルチプロセッシングの問題に気付いたので、multiprocessing.pathos で解決しようとしました。しかし、私はまだ得ています

PicklingError: Can't pickle <type 'SwigPyObject'>: it's not found as__builtin__.SwigPyObjec

pickle.py からの多くのエラーと共に。この実際的な問題は別として、なぜ myfunc の最終結果以外がピクルス化されているのか、私にはよくわかりません。

4

2 に答える 2