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

Python 3.9.13多线程问题:键盘控制程序线程无法并行运行

解决键盘控制程序多线程并行运行问题

问题的核心错误是创建线程时直接调用了函数,而非将函数对象传递给Thread的target参数。你当前的写法会先在主线程中执行KILL(),直到该函数执行完毕才会继续创建下一个线程,自然无法实现并行。

修正后的代码

import ctypes
import sys
import keyboard
from threading import Thread

def KILL():
    print("press q to end program")
    keyboard.wait('q')
    print("Exited")
    # 子线程调用sys.exit()仅终止当前子线程,若需终止整个程序可改用os._exit()(需导入os)
    sys.exit()

def Primary():
    print("secondary thread")
    keyboard.wait('w')
    print("ending program")

if __name__ == '__main__':
    # 关键改动:去掉函数后的括号,直接传递函数对象给target
    Thread(target=KILL).start()
    Thread(target=Primary).start()

改动说明

  • 当你写target=KILL()时,Python会立即执行KILL()函数,并将函数的返回值(此处为None)传给target参数,线程并未执行你期望的逻辑。正确写法是target=KILL,直接传递函数本身,让线程去调用它。
  • 额外注意:子线程中调用sys.exit()只会终止当前子线程,不会结束整个程序。如果需要完全终止程序,可以导入os模块后使用os._exit(0),或者设置全局终止标志,让所有线程检测标志后自行退出。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 07:32:15