多处理调试技术

Fra*_*rth 19 python debugging deadlock multiprocessing

我在调试多进程应用程序时遇到了麻烦(特别是在python的多处理模块中使用进程池).我有一个明显的僵局,我不知道是什么导致它.堆栈跟踪不足以描述该问题,因为它仅显示多处理模块中的代码.

是否有任何python工具,或用于调试死锁的其他常规技术?

bro*_*ool 35

是的,调试死锁很有趣.您可以将日志记录级别设置得更高 - 请参阅Python文档以获取它的描述,但实际上很快:

import multiprocessing, logging
logger = multiprocessing.log_to_stderr()
logger.setLevel(multiprocessing.SUBDEBUG)
Run Code Online (Sandbox Code Playgroud)

此外,为代码中的任何内容添加日志记录,以处理资源或可能存在争用的内容.最后,在黑暗中拍摄:在导入过程中产生子进程可能会导致问题.

  • 是的 - 大量的日志记录,尽管可能很差,仍然是隔离并最终定位和修复死锁问题的最佳整体方法......从而+1.多处理具有其队列的特定死锁问题,这些问题都有详细记录 - 请检查您是否遇到过这些问题. (2认同)

Eri*_*got 6

首先,为了避免死锁,学习良好的实践非常有用,因为并行处理的确非常微妙。(免费)《信号量小书》可能是一本非常有趣的书!