Python多处理溢出错误

Python多处理溢出错误,python,python-2.7,multiprocessing,Python,Python 2.7,Multiprocessing,我正在测试Python多处理模块,以便从同一文件的不同缓冲区偏移量中读取数据。偏移量是先验的,并被索引为“行” 代码如下所示: def get_object(row): return file.get(row) #Where get seeks to the offset and returns the data object. rows = range(len(file)) #This gets the row ids. pool = mp.Pool() results = pool

我正在测试Python多处理模块,以便从同一文件的不同缓冲区偏移量中读取数据。偏移量是先验的,并被索引为“行”

代码如下所示:

def get_object(row):
    return file.get(row) #Where get seeks to the offset and returns the data object.

rows = range(len(file)) #This gets the row ids.
pool = mp.Pool()
results = pool.map(get_object, rows)
print results
这将返回一个溢出错误。这个网站上有很多关于溢出错误的帖子,但通常是由于范围问题或人们试图创建巨大的列表。行数在1024到100000之间…一点也不太大

我可以打印结果,并看到错误发生在iterable的末尾。我相信这与map如何加入对象列表有关。它应该维持秩序,所以我在那里不会有任何问题

错误:
溢出错误:Python int太大,无法转换为C long

更新:查看源代码pool.py的第528行(Enthound Python 2.7)出现错误。这是
ApplyResult
类的
get
方法

以下是我认为代码所采用的函数和演练:

def get(self, timeout=None)
    self.wait(timeout)
    if not self._ready:
        raise TimeoutError
    if self._success:
        return self._value
    else:
        raise self._value
这是由上面函数中的map调用的。自我准备检查通过了,因为我没有看到时间错误。self.\u success check调用函数successful:

def successful(self):
    assert self._ready
    return self._success
因此,get函数随后会重新检查作业是否已完成。大概是因为我们刚刚通过了前面调用的if语句中的检查。返回值应该是对象(而不是int),然后溢出


想法?

请注意,
[x代表x范围(len(文件))]
范围(len(文件))
相同,只是速度较慢。
get\u object
的定义不起作用。@larsmans“get\u object的定义也不起作用。”-你能在此基础上展开吗?为什么不呢?它忽略它的参数并使用一些索引
i
。这一定是个错误。@larsmans更新了语法更正。什么操作系统?您是否碰巧是无限多处理循环的受害者(即,如果Windows下的缺少)?