You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python如何从其他函数内部终止运行中的threading线程函数

Python 跨函数终止运行中 threading 线程方案

Python 标准库的 threading.Thread 没有提供原生的强制终止线程的接口,最安全、最常用的实现方式是通过自定义退出标志位的方式实现:

完整可运行修改后代码

from threading import *
from time import *
import keyboard

# 定义线程退出标志位,初始为False
exit_flag = False

def ExampleFunction():
    # 循环条件改为判断退出标志位
    while not exit_flag:
        print('The Example function is running.')  # 循环内执行相关操作
        sleep(1)
    # 可以在这里加线程退出前的资源清理逻辑
    print("ExampleFunction 已正常退出")

def ExitFunction():
    global exit_flag
    print('ExitFunction was called.')
    keyboard.wait('f8')  # 等待f8按键被按下
    # 修改退出标志位,通知目标线程退出
    exit_flag = True

if __name__ == '__main__':
    Thread(target=ExampleFunction).start()
    Thread(target=ExitFunction).start()

实现说明

  • 核心逻辑是用一个布尔变量作为两个线程的共享通信标志,不需要加锁,因为Python中布尔值的赋值是原子操作
  • 如果你的业务逻辑中循环内有超过1秒的阻塞操作,建议把长阻塞拆分为短时间轮询,同时每次轮询都判断退出标志位,避免线程退出延迟
  • 不推荐使用操作系统层面强制kill线程的方案,该方案容易导致线程持有的锁、打开的文件等资源没有正常释放,引发内存泄漏、死锁等不可预期的问题

内容的提问来源于stack exchange,提问作者Simon Bretschneider

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 07:06:09