Python 杀死线程
我正在尝试在Python中结束一个线程。使用异常是比较好的方法,因为通过try:except:的方式优雅地退出线程的运行方法,可以让我们关闭一些资源。
我试过这个链接:在Python中有没有办法结束一个线程?,但它指出在代码执行系统调用(比如time.sleep)时是无法做到的。有没有办法在另一个线程(或者进程也可以)中引发一个异常,不管当前线程正在执行什么?
1 个回答
4
一般来说,处理异步异常是比较困难的。这是因为异常可能在代码的任何地方产生,而不是在某个特定的代码点上。因此,异常处理的测试也变得复杂了。
不过,这种情况是可以处理的,但在Python中,目前并不安全。在Python中异步抛出异常是危险的,因为你可能会在一个异常处理器中抛出异常,这样会导致另一个异常出现,从而影响到清理工作。你可以查看我在如何限制Python中函数调用的执行时间的回答。
虽然可以发出某些形式的信号来取消休眠,但Python中并没有通用的基础设施来处理这个问题。更好的做法是避免需要强制终止一个线程,或者将线程移到一个进程中,这样你可以向整个进程发送信号,安全退出。