-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 
+0

asyncioについて –

+0

サブプロセスが初期化されるまでに時間がかかり、プロセス間でデータを交換するたびに、一方の端でピクルされ、他方の端でピクルされます。マルチプロセッシングを適切に利用するには、システムが独自の計算を実行し、できるだけデータを交換しないようにシステムを設計します。 [フルサイズ]のマルチプロセッシングを確認するには[この小さなベンチマーク](https://stackoverflow.com/a/44525554/7553525)をチェックしてください。 – zwer

答えて

2

これは、マルチスレッド/マルチ処理の古典的な問題です。並列処理を行う場合は、並列処理のために保存する時間が、並列処理を管理する時間よりも長いことを確認する必要があります。

入力サイズを大きくしてみてください。次に、並列性の影響が表示されます。

関連する問題