python - 使用多处理池时错误回溯没有描述性

标签 python multiprocessing

嗨,我正在使用 python 多处理模块,问题是当我从另一个线程中执行的代码中收到错误时,回溯仅指向 multiprocessing/pool.py",第 520 行 而不是导致错误的行号。

Traceback (most recent call last):
  File "analyzer.py", line 196, in <module>
    for ret in pool.imap(ProcessRow, rows):
  File "/usr/lib64/python2.6/multiprocessing/pool.py", line 520, in next
    raise value
TypeError: unsupported operand type(s) for +: 'NoneType' and 'str'

所以analyzer.py中的第196行是当我在pool.imap(ProcessRow, rows)中调用for ret时:

所以这完全没有帮助......有什么建议吗?

最佳答案

该错误是由 ProcessRow() 或其调用的某个函数引发的(为什么你的函数是 CamelCaseUpper?)。

您没有获得正确的堆栈跟踪,因为异常实际上是从您的代码正在执行的子进程(因此模块的名称:multiprocessing)中腌制出来的,然后再次引发在经理进程中。因此,堆栈跟踪显示得好像它是本地的(虽然它实际上是子进程中引发的异常)。

preferred way处理这个问题的方法似乎是捕获代码 fork 中的异常并从那里打印正确的堆栈跟踪。

关于python - 使用多处理池时错误回溯没有描述性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31521227/

相关文章:

python - 安全索引字典树

java - 进程内通信方式

python 素数处理 : processing pool is slower?

python3 多处理示例使我的电脑崩溃 :(

python - 当从另一个进程保存对象时,在 Model.objects.filter() 之后需要 Django transaction.commit()

python - 在 python 守护进程中使用多处理模块时出错

python - 从python中的字符串中删除连续的重复字符

javascript - 如何将 base64 编码的图像发送到 FastAPI 后端?

python - 如何从文件中读取数据并获取索引输出

python - Pandas 中仅针对所有先前值的条件运行总和