dask
パッケージdelayed
とcompute
メソッドを使用して Python 2.7 コードを作成しました。
これが私のコードの小さな例です:
from dask import delayed, compute
import time
class simulation():
# defines simulation parameters
def __init__(self,x):
self.x = x
jobs = range(50) # sample jobs
def simulate(sim):
# sample simulation function
time.sleep(0.01*sim.x)
return sim.x**2
def save_results(results):
# sample dump results function
print results
return []
results = []
for i,j in enumerate(jobs) :
sim = simulation(j)
res = delayed(simulate)(sim) # running simulation given input params as job
results.append(res)
if i%10==0 or i==len(jobs)-1: # evaluation every 50 steps
results = compute(results)[0] # dask execution
results = save_results(results) # storing results to DB and returning empty list
何らかの理由で、このコードは Windows の anaconda セットアップでは完全に実行されますが、Linux では失敗します。
私が得るエラーは次のとおりです。
--> 134 res = delayed(simulate)(simulation) 135 136
...
/home/user/.conda/envs/neuro/lib/python2.7/abc.pyc in __subclasscheck__(cls, subclass) 159 return False 160 # Check the subclass hook --> 161 ok = cls.__subclasshook__(subclass) 162 if ok is not NotImplemented: 163 assert isinstance(ok, bool) /home/user/.conda/envs/neuro/lib/python2.7/site-packages/backports_abc.pyc in __subclasshook__(cls, C) 64 def __subclasshook__(cls, C): 65 if cls is Generator: ---> 66 mro = C.__mro__ 67 for method in required_methods: 68 for base in mro: AttributeError: class simulation has no attribute '__mro__'
パッケージ ( dask
) を最新バージョンに更新しても解決しませんでした。
それを修正する方法について何か提案はありますか?
ありがとう