2

私はこのに似た問題を抱えています。pathos モジュールで単純なマルチプロセッシング ルーチンを実行できず、酸洗エラーが発生します。以下はコードとエラーです。

from pathos.multiprocessing import ProcessingPool
import dill
class ProcClass(object):
    def __init__(self):
        pass
    def f(self,x):
        return x*x
pc = ProcClass()
pl = ProcessingPool(3)
print pl.map(pc.f, range(10))

返されたエラー:

Exception in thread Thread-2:
Traceback (most recent call last):
  File "/Library/Frameworks/EPD64.framework/Versions/7.3/lib/python2.7/threading.py", line 551, in __bootstrap_inner
    self.run()
  File "/Library/Frameworks/EPD64.framework/Versions/7.3/lib/python2.7/threading.py", line 504, in run
    self.__target(*self.__args, **self.__kwargs)
  File "/Library/Frameworks/EPD64.framework/Versions/7.3/lib/python2.7/multiprocessing/pool.py", line 320, in _handle_tasks
    put(task)
PicklingError: Can't pickle <type 'function'>: attribute lookup __builtin__.function failed

インストールしました:pp、dill、pox、およびマルチプロセッシング、次にpathosをインストールしました。インストールは機能しますが、常に次のエラーが表示されます。


警告: 次の依存関係の 1 つが解決されていません: pp(ft) >=1.6.4.5 dill >=0.2.4 pox >=0.2.2 (マルチ) 処理


同様の質問に対するpathosの作成者からの回答に基づいて、インストールに問題があるようです。適切な依存関係がインストールされていることを確認するたびに、何度か削除して再インストールしました。私はMacOSで実行しており、python 2.7を使用しています。どんな助けでも大歓迎です!

4

2 に答える 2

0

重要な依存関係が欠落しているようです。では、シリアライザーを使用するフォークである を使用pathosする必要があります。multiprocessmultiprocessingdill

>>> import multiprocessing
>>> multiprocessing.__version__
'0.70a1'
>>> import multiprocess   
>>> multiprocess.__version__
'0.70.4.dev0'
>>> 
>>> multiprocess.Pool().map(lambda x:x*x, range(10))
[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
>>> 
于 2015-10-09T11:41:52.437 に答える