我使用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