IndexError:array:index超出范围(使用Octopus时)

时间:2012-04-11 11:28:08

标签: python ubuntu

我正在使用ocropus进行二值化和分割未分段图像。 我使用命令将ocropus的图像文件二值化为

ocropus-binarize -o book /home/images/*.tif

通过使用上面提到的命令,它可以很好地用于少量图像,但在一段时间后它会提示错误信息,如下所示,

File "/usr/local/bin/ocropus-binarize", line 151, in <module>
   result = pool.map(process1, jobs)
File "/usr/lib/python2.7/multiprocessing/pool.py"
   return self.map_async(func, iterable, chunksize).get()
File "/usr/lib/python2.7/multiprocessing/pool.py", line 517, in get
   raise self._value
IndexError: narray: index out of range

对此事的任何帮助都将非常感激。

1 个答案:

答案 0 :(得分:0)

这个答案与OCRopus没有特别的关系,但对于未来的谷歌搜索通常会出现此错误。

多处理模块将工作拆分为块并将每个块发送到工作进程。工作在块中执行,如下所示:

try:
    result = (True, func(*args, **kwds))
except Exception, e:
    result = (False, e)

func() apply()map()取决于您使用的是pool.apply()还是pool.map(),而args和kwds包含您要运行的功能以及要运行它的数据。

如果您的函数引发异常,而不是直接窃听工作进程,则会将该错误传递回管理所有worker的结果元组。主进程看到了这一点(如上所述,在multiprocessing.py:517上,这取决于Python版本)并从函数中重新引发原始异常。

这是 函数中的错误,可能是单个数据。不幸的是,没有报告原始异常的行号,这使得调试有点棘手。