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

时间:2017-12-13 12:47:36

标签: 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,直到任何键被按下。

两个线程彼此独立运行的可能解决方案是什么?

1 个答案:

答案 0 :(得分:2)

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

IO

它应该有用。