私はmiltiprocessingを使用して巨大なファイルの多くのチャンクを読み取ってから処理していますが、プロセスを起動するとコアを共有するプロセスがあるため、何かを失っています。例: 12 コアのシステムで、10 個のプロセスを実行し、6 つは 6 コア (それぞれに 1 つ) で、他の 4 つは 2 コア (各コアに 2 つ) です... しかし、それ以外の場合は、10 に対して 10 コアを使用して正常に動作します処理する...
コード:
from multiprocessing import Process
[...]
process1=Process(target=run_thread, args=("./splited/"+file,result,))
process2=Process(target=run_thread, args=("./splited/"+file,result,))
process3=Process(target=run_thread, args=("./splited/"+file,result,))
process1.start()
process2.start()
process3.start()
[...]
process1.join()
process2.join()
process3.join()
これは私のコードの例です。問題が発生したときに 10 で試していました。
ありがとう。
編集:
- このマシンはマルチスレッドなしで動作するため、12 個のコアと最大 12 個の並列スレッドを備えています。
- 1 つのコアを 2 つ以上共有している場合があります。
- ボトルの首は、このプログラムの IO ではなく、ファイルの各行を処理します。