如何在Python中使用CTRL+C确定代码不可中断的原因

2024-10-01 02:33:22 发布

您现在位置:Python中文网/ 问答频道 /正文

我用请求来拉一些文件。我注意到程序在经历了从5K到20K的大量迭代之后似乎挂起了,我可以判断它挂起是因为存储结果的文件夹在几个小时内没有改变。我一直试图通过按CTRL+C来中断这个过程(我使用的是IDLE),但是没有成功。我想中断而不是终止进程,因为重新启动比较容易。我最终不得不终止这个过程。我重新启动,它运行良好,直到我有相同的症状。我很想知道如何诊断这个问题,但既然我必须把所有的东西都杀掉,我就不知道从哪里开始。在

有没有另一种方法来观察正在发生的事情或更有力地中断这个过程?在

我一直在假设,如果我能在不杀人的情况下中断,我可以查看全局变量,或者做一些其他的修改来找出我的代码挂在哪里。在


Tags: 文件方法程序文件夹症状进程过程情况
1条回答
网友
1楼 · 发布于 2024-10-01 02:33:22

以防为时不晚:我也遇到过同样的问题,并有一些建议

第一件事:在python中,大多数等待的api是不可中断的(即螺纹连接(), 锁定.获取()...). 有关更多信息,请参阅以下页面: http://snakesthatbite.blogspot.fr/2010/09/cpython-threading-interrupting.htmlhttp://docs.python.org/2/library/thread.html

如果一个线程正在等待这样的调用,它就不能停止。 如果有一个线程被挂起,或者其他线程会无限期地停止运行。在

为了避免这种情况,可以将该线程设为守护程序线程:Thread.daemon=True打电话之前线程启动(). 在

第二件事,要找到程序挂起的位置,可以用调试器启动它,但我更喜欢日志记录,因为日志总是在那里,以防调试延迟。在

尝试在每次等待调用之前和之后记录日志,以查看线程被挂起的时间。为了获得高质量的日志,可以使用配置了文件处理程序、html处理程序或甚至更好的syslog处理程序的python日志记录。在

相关问题 更多 >