0

daskパッケージdelayedcomputeメソッドを使用して 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) を最新バージョンに更新しても解決しませんでした。

それを修正する方法について何か提案はありますか?

ありがとう

4

2 に答える 2

2

あなたの例は、Python 2.7と3.6の両方で、Linuxで実際にうまく機能します。

ただし、コメントに記載されているように、問題は次の行にあると思われます。

class simulation():

これは奇妙です。通常、Python 2.7 では次のいずれかが表示されます。

class simulation(object):  # new style class
class simulation:  # old style class

これらのいずれかを試して、問題が解決するかどうかを確認することをお勧めします。

于 2017-07-09T21:55:00.200 に答える