我正在使用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
对此事的任何帮助都将非常感激。
答案 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版本)并从函数中重新引发原始异常。
这是 函数中的错误,可能是单个数据。不幸的是,没有报告原始异常的行号,这使得调试有点棘手。