-1
すべてのコアを使用する方法を検索します。しかし、私は全部試してみると、わずかに減少する。Python(freshmeat_linux/Linux])でマルチプロセッシングでスピードを得る方法を教えてください
私は、次の試みた:
start=time()
results =[]
for i in inputs:
results.append(processInput(i))
print 'simple time ', time()-start
マルチプロセッシングずに
from joblib import Parallel, delayed
import multiprocessing
from time import time
import numpy as np
inputs = range(1000)
def processInput(i):
return i * i
が
num_cores = multiprocessing.cpu_count()
start=time()
results = Parallel(n_jobs=num_cores)(delayed(processInput)(i) for i in inputs)
print 'multiproc time ', time()-start
マルチプロセッシング使用して取得する出力:
multiproc time 0.14687204361
simple time 0.000839948654175
asyncioについて –
サブプロセスが初期化されるまでに時間がかかり、プロセス間でデータを交換するたびに、一方の端でピクルされ、他方の端でピクルされます。マルチプロセッシングを適切に利用するには、システムが独自の計算を実行し、できるだけデータを交換しないようにシステムを設計します。 [フルサイズ]のマルチプロセッシングを確認するには[この小さなベンチマーク](https://stackoverflow.com/a/44525554/7553525)をチェックしてください。 – zwer