python - 在Python中检测独立(非阻塞)线程中的按键

原文 标签 python multithreading python-3.x

在Python脚本中,我想连续调用一个函数,同时监听用户按下ESC键,然后退出该程序。

这是我当前的代码:

import threading
import msvcrt

def wait_for_esc():
  while True:
    key = ord(msvcrt.getch())
    if key == 27:
      print("ESC")
      exit(0)

def do_something():
  while True:
    call_function()

thread_1 = threading.Thread(name="wait_for_esc", target=wait_for_esc())
thread_2 = threading.Thread(name="do_something", target=do_something())

thread_1.start()
thread_2.start()


但是,似乎thread_1阻止thread_2直到按下任何键。

如何使两个线程彼此独立运行?

最佳答案

将目标任务传递给线程时,需要传递函数对象-而不是调用函数。您需要删除函数名末尾的括号。

thread_1 = threading.Thread(name="wait_for_esc", target=wait_for_esc)
thread_2 = threading.Thread(name="do_something", target=do_something)


它应该工作。

关于python - 在Python中检测独立(非阻塞)线程中的按键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47793417/

相关文章:

python - Python上的循环导入

python - 在 python 类名中使用重音是一种不好的做法吗?

c++ - 根据POS标签值更改同义词引理

python - 从父文件夹导入模块

python - MyPy 不允许将 TypedDict 的类作为参数传递给函数

Java 线程内存爆炸

python - 使用beautifulsoup抓取时如何在html日期选择器中输入日期范围?

python - Python美丽的汤网爬虫不返回标签内容

java - Java中唤醒线程的问题

java - 访问线程以通过其他方法通知它(Android应用程序)