在python中停止一个线程

时间:2010-02-08 17:49:26

标签: python multithreading

我正在使用thread.start_new_thread在我的Python应用中创建一个线程。

如果在三秒钟内没有完成,我该怎么办?

4 个答案:

答案 0 :(得分:2)

你不能直接这样做。无论如何中止一个线程并不是一个好习惯 - 而是考虑使用同步机制让你以“软”的方式中止线程。

但是如果没有非守护线程(例如,如果唯一的主线程结束),则daemonic threads将自动中止。也许这就是你想要的。

答案 1 :(得分:1)

你做不到。线程不能从外部杀死。你唯一能做的就是添加一种让线程退出的方法。如果线程在某些系统调用中被阻止,显然你将无法做到这一点。

答案 2 :(得分:1)

如果你真的需要这样做(例如线程调用可能永远挂起的代码),那么考虑重写代码以使用多处理模块生成进程。然后,您可以使用Process.terminate()方法终止该进程。当然,你需要2.6或更高版本。

答案 3 :(得分:1)

related question中所述,您可以通过ctypes.pythonapi引发异常,但不能等待系统调用。