Python杀死线程

时间:2010-09-30 03:42:56

标签: python multithreading sleep

我正试图在python中杀死一个线程。一个例外是首选的方法,作为线程的run方法通过try的优雅退出:except:pair将允许关闭资源。

我尝试了Is there any way to kill a Thread in Python?,但是指定在代码执行系统调用时不起作用(如time.sleep)。有没有办法在另一个线程(或者进程中,不要介意)中引发一个异常,这个异常对于线程正在执行什么没有用处?

1 个答案:

答案 0 :(得分:4)

通常,提高异步异常很难正确处理。这是因为,而不是具有可能生成异常的单个特定代码点 - 因此需要测试异常处理的地方 - 而不是在任何字节码指令之后生成异常。这使得实现和完全测试异常处理变得更加困难。

也就是说,它可以完成 - 但是,目前,在Python中并不安全。在Python中异步引发异常是危险的,因为您可能在异常处理程序期间将其引发,这将引发另一个异常并防止正常发生清理。请参阅我在How to limit execution time of a function call in Python的回答。

有可能发出某些形式的睡眠信号要取消,但在Python中没有通用的基础设施。你最好避免杀死线程,或者将线程移动到进程,在那里你可以向整个进程发送信号并干净地退出。