作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在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/
我是一名优秀的程序员,十分优秀!