私は、CSVファイルをソートしてクライアントの統計を生成するpython/cythonを使ってユーティリティを開発しましたが、マップされた関数の実行前に例外を発生させるようです。少数のファイルをソートすることは期待どおりに機能しているようですが、ファイル数が10に増えるにつれて、pool.mapを呼び出した後、私は以下のIndexErrorを取得します。誰かが以下のエラーを認識することはありますか?どんな助けでも大歓迎です。Pythonマルチプロセッシングpool.mapはIndexErrorを発生させます
コードがNDAの下ですが、ユースケースは非常に簡単です:
コードサンプル:
def sort_files(csv_files):
pool_size = multiprocessing.cpu_count()
pool = multiprocessing.Pool(processes=pool_size)
sorted_dicts = pool.map(sort_file, csv_files, 1)
return sorted_dicts
def sort_file(csv_file):
print 'sorting %s...' % csv_file
# sort code
出力:
File "generic.pyx", line 17, in generic.sort_files (/users/cyounker/.pyxbld/temp.linux-x86_64-2.7/pyrex/generic.c:1723)
sorted_dicts = pool.map(sort_file, csv_files, 1)
File "/usr/lib64/python2.7/multiprocessing/pool.py", line 227, in map
return self.map_async(func, iterable, chunksize).get()
File "/usr/lib64/python2.7/multiprocessing/pool.py", line 528, in get
raise self._value
IndexError: list index out of range
見ます( 'sorted_dict')のコードサンプル(' results')が表示されます。実際のコードを実行してエラーを生成していないことを示しています。 – BrenBarn
私の一部のタイプミス - 結果変数は、統計を計算する非常に似た関数からのものでした。私はタイプミスを修正しました。 – Cryo