python - 如何实时解决线程死锁?

标签 python python-3.x python-multithreading

如果在运行时怀疑Python线程之间存在死锁,有没有办法在不杀死整个进程的情况下解决它?

例如,如果一些线程花费的时间比应有的时间长得多,资源管理器可能会怀疑其中一些线程发生了死锁。当然,将来应该在代码中对其进行调试修复,但是否有一个干净的解决方案可以立即使用(在运行时)来杀死特定线程,以便其他线程可以恢复?

编辑:我正在考虑添加一些“死锁检测”循环(在它自己的线程中),它会休眠一段时间,然后检查所有正在运行的线程,如果其中一些线程看起来慢得可疑,它会杀死最不重要的线程他们之中。线程在什么时候被怀疑发生死锁,以及哪一个是最不重要的,当然是由死锁检测循环程序员定义的。

显然,它不会捕获所有问题(最明显的是如果死锁检测线程本身已死锁)。这个想法并不是要找到一个数学上完美的解决方案(当然,也不是编写可能导致死锁的代码)。相反,我想在一些现实案例中部分解决问题。

最佳答案

您可以尝试使用this提前编写代码片段,但在执行过程中程序卡住了,您无能为力。

像 WinDbg 或 strace 这样的调试器可能会有所帮助,但由于 Python 是一种解释性语言,我怀疑它们是否实用。

关于python - 如何实时解决线程死锁?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39562203/

相关文章:

python - 在 Python 中编写一个函数,该函数返回数组中大于零的数字的计数

python - 如何计算 PIL 逊相关矩阵并仅保留有效值?

python - 什么时候应该使用 iteritems() 而不是 items()?

python - `.loc` 和 `.iloc` 与 MultiIndex'd DataFrame

python - 如何测试一个对象是否是锁?

Python 线程性能与核心数

python - 单个单词 'string'能否转换成同名字典

python - 监控 Facebook 页面

python - Jupyter Notebook 时间分析

Python:如何在每次输出而不是终止时获取子进程的输出?