あなたが長い時間がかかるように強制すると、状況が並行して実行されているかどうかを簡単に知ることができます。このコードを実行する場合:
from time import sleep, time
from dask import delayed
start = time()
def inc(x):
sleep(1)
print('[inc(%s): %s]' % (x, time() - start))
return x + 1
array = [0] * 5
for x in range(5):
array[x] = delayed(inc)(x)
for x in range(5):
array[x].compute()
呼び出しが順番に発生することは非常に明白になります。ただし、最後のループを次のように置き換えた場合は、
delayed(array).compute()
が表示されます。私のマシンでは、出力は次のようになります。
[inc(1): 1.00373506546]
[inc(4): 1.00429320335]
[inc(2): 1.00471806526]
[inc(3): 1.00475406647]
[inc(0): 2.00795912743]
明らかに、実行された最初の4つのタスクは並列でした。おそらく、デフォルトの並列処理はマシン上のコアの数に設定されています。なぜなら、CPUを大量に使用するタスクでは、それ以上の処理を行うのは一般的に有用ではないからです。
で多くの遅れ値を計算する
dask.compute
機能を使用することができますが、私は質問を誤解し、私のコメントを削除します。 –