2
私は、Pythonのマルチプロセッシングモジュールを使っていくつかのコードをプロファイリングしてきました( 'job'関数は数値を二乗するだけです)。私は奇妙な見つけPythonマルチプロセッシング:大きなチャンク化が遅いのはなぜですか?
data = range(100000000)
n=4
time1 = time.time()
processes = multiprocessing.Pool(processes=n)
results_list = processes.map(func=job, iterable=data, chunksize=10000)
processes.close()
time2 = time.time()
print(time2-time1)
print(results_list[0:10])
ことの一つは、最適なチャンクサイズは約10Kの要素のように見えるということである - これは私のコンピュータ上で16秒を要しました。チャンクサイズを100kまたは200kに増やすと、20秒に減速します。
この違いは、長いリストでは酸洗処理に要する時間が長いためですか? 100要素のチャンクは62秒かかっていると私は推測しています。これは、異なるプロセス間でチャンクを前後に渡すために必要な余分な時間のためです。最適なチャンクについて