如果在运行时怀疑Python线程之间存在死锁,有没有办法在不杀死整个进程的情况下解决它?
例如,如果一些线程花费的时间比应有的时间长得多,资源管理器可能会怀疑其中一些线程发生了死锁。当然,将来应该在代码中对其进行调试修复,但是否有一个干净的解决方案可以立即使用(在运行时)来杀死特定线程,以便其他线程可以恢复?
编辑:我正在考虑添加一些“死锁检测”循环(在它自己的线程中),它会休眠一段时间,然后检查所有正在运行的线程,如果其中一些线程看起来慢得可疑,它会杀死最不重要的线程他们之中。线程在什么时候被怀疑发生死锁,以及哪一个是最不重要的,当然是由死锁检测循环程序员定义的。
显然,它不会捕获所有问题(最明显的是如果死锁检测线程本身已死锁)。这个想法并不是要找到一个数学上完美的解决方案(当然,也不是编写可能导致死锁的代码)。相反,我想在一些现实案例中部分解决问题。
最佳答案
您可以尝试使用this提前编写代码片段,但在执行过程中程序卡住了,您无能为力。
像 WinDbg 或 strace 这样的调试器可能会有所帮助,但由于 Python 是一种解释性语言,我怀疑它们是否实用。
关于python - 如何实时解决线程死锁?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39562203/