たとえば、2つのプロセッサを持つプールオブジェクトがある場合:
p=multiprocessing.Pool(2)
そして、ディレクトリ上のファイルのリストを反復処理し、マップ機能を使用したい
誰かがこの関数のチャンクサイズを説明できますか?
p.map(func, iterable[, chunksize])
たとえば、chunksizeを10に設定すると、10個のファイルごとに1つのプロセッサで処理する必要がありますか?
Pool.mapのドキュメント を見ると、ほぼ正しいようです。chunksize
パラメータを使用すると、イテラブルがに分割されます。おおよそそのサイズで、各ピースは個別のタスクとして送信されます。
したがって、あなたの例では、はい、map
は最初の10(おおよそ)を受け取り、それを単一のプロセッサのタスクとして送信します...次に、次の10が別のタスクとして送信されます。これは、プロセッサが10ファイルごとに交互になるという意味ではありません。プロセッサ#1が1-10および11-20になり、プロセッサ#2が21-30および31-40になる可能性は十分にあります。