Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/292.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python超时_Python_Multithreading_Timeout - Fatal编程技术网

Python超时

Python超时,python,multithreading,timeout,Python,Multithreading,Timeout,我一直在到处寻找一个好的超时脚本,如果线程处于活动状态超过X秒,它可以杀死线程,但是我看到的所有示例都有一些缺陷,这些缺陷并不总是会阻止线程。使用thread.join(x)最终会破坏它作为线程的目的 我发现的唯一一个好的例子是,它并非没有缺点 有人知道更好的方法吗?我知道这可能不是你想要的,但是你考虑过信号方法吗? 您可以在线程执行开始时设置一个报警信号,然后在信号处理程序中停止线程。请参阅我的答案-有一个带有InterruptableThread类的片段和一个在超时后杀死另一个线程的示例-

我一直在到处寻找一个好的超时脚本,如果线程处于活动状态超过X秒,它可以杀死线程,但是我看到的所有示例都有一些缺陷,这些缺陷并不总是会阻止线程。使用thread.join(x)最终会破坏它作为线程的目的

我发现的唯一一个好的例子是,它并非没有缺点


有人知道更好的方法吗?

我知道这可能不是你想要的,但是你考虑过信号方法吗?

您可以在线程执行开始时设置一个报警信号,然后在信号处理程序中停止线程。

请参阅我的答案-有一个带有InterruptableThread类的片段和一个在超时后杀死另一个线程的示例-这正是您想要的


activestate也有类似的功能。

Python的人故意让这项工作变得困难,因为通常情况下,杀死可能写入共享内存的内容是个坏主意。你能用进程而不是线程吗?在这个例子中,它是用于mod_wsgi脚本的,所以它更像是一个终止的东西。一旦脚本运行超过时间限制,只需杀死整个线程并退出,因此潜在的破坏共享内存的问题并不大。您是在守护程序模式还是嵌入式模式下运行?令人痛苦的是,没有简单的方法杀死线程,线程可能是挂起的HTTP连接,由于DNS查找等原因,>此模块不能很好地处理线程(但是,谁会呢?)