我使用python /用Cython的排序CSV文件和一個客戶端生成統計數據開發了一個實用工具,但是調用pool.map似乎引發異常我映射函數有機會執行前。對少量文件進行排序似乎按預期運行,但隨着文件數增加到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
您展示回溯包含不同的雜物ble名稱('sorted_dict')比您的代碼示例('results')中的名稱更糟糕,這表示您不會發布運行並生成錯誤的實際代碼。 – BrenBarn
我的部分是Typo - 結果變量來自一個非常類似的計算統計數據的函數。我修復了錯字。 – Cryo