我已经开发了一个使用 python/cython 对 CSV 文件进行排序并为客户端生成统计信息的实用程序,但是在我的映射函数有机会执行之前调用 pool.map 似乎会引发异常。对少量文件进行排序似乎可以按预期运行,但是随着文件数量增长到 10 个,我在调用 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