マルチプロセッシングを介してクラスメソッドを使用してコードを並列化しようとしています。基本的な構造は次のとおりです。
# 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 の最終結果以外がピクルス化されているのか、私にはよくわかりません。