Python超时
我一直在到处寻找一个好的超时脚本,如果线程处于活动状态超过X秒,它可以杀死线程,但是我看到的所有示例都有一些缺陷,这些缺陷并不总是会阻止线程。使用thread.join(x)最终会破坏它作为线程的目的 我发现的唯一一个好的例子是,它并非没有缺点Python超时,python,multithreading,timeout,Python,Multithreading,Timeout,我一直在到处寻找一个好的超时脚本,如果线程处于活动状态超过X秒,它可以杀死线程,但是我看到的所有示例都有一些缺陷,这些缺陷并不总是会阻止线程。使用thread.join(x)最终会破坏它作为线程的目的 我发现的唯一一个好的例子是,它并非没有缺点 有人知道更好的方法吗?我知道这可能不是你想要的,但是你考虑过信号方法吗? 您可以在线程执行开始时设置一个报警信号,然后在信号处理程序中停止线程。请参阅我的答案-有一个带有InterruptableThread类的片段和一个在超时后杀死另一个线程的示例-
有人知道更好的方法吗?我知道这可能不是你想要的,但是你考虑过信号方法吗? 您可以在线程执行开始时设置一个报警信号,然后在信号处理程序中停止线程。请参阅我的答案-有一个带有InterruptableThread类的片段和一个在超时后杀死另一个线程的示例-这正是您想要的
activestate也有类似的功能。Python的人故意让这项工作变得困难,因为通常情况下,杀死可能写入共享内存的内容是个坏主意。你能用进程而不是线程吗?在这个例子中,它是用于mod_wsgi脚本的,所以它更像是一个终止的东西。一旦脚本运行超过时间限制,只需杀死整个线程并退出,因此潜在的破坏共享内存的问题并不大。您是在守护程序模式还是嵌入式模式下运行?令人痛苦的是,没有简单的方法杀死线程,线程可能是挂起的HTTP连接,由于DNS查找等原因,>此模块不能很好地处理线程(但是,谁会呢?)