【问题标题】:Python kill threadPython杀死线程
【发布时间】:2011-04-19 03:48:07
【问题描述】:

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

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

【问题讨论】:

标签: python multithreading sleep


【解决方案1】:

一般来说,引发异步异常很难正确处理。这是因为,不是有可能生成异常的单个特定代码点(因此需要测试异常处理的地方),而是可能在 any 字节码指令之后生成异常.这使得实施和全面测试异常处理变得更加困难。

也就是说,它可以做到——但目前在 Python 中并不安全。在 Python 中异步引发异常是危险的,因为您可能在异常处理程序期间引发它,这将引发另一个异常并阻止正确进行清理。在How to limit execution time of a function call in Python 上查看我的回答。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-11-13
    • 2022-11-29
    • 2023-02-01
    • 1970-01-01
    • 2015-04-22
    • 2014-10-24
    • 2016-07-10
    • 1970-01-01
    相关资源
    最近更新 更多