要实现一个按下Esc键终止的周期性线程,可以使用Python的threading模块来创建线程,并使用pynput模块来监听键盘事件。
下面是一个示例代码,演示如何创建一个周期性线程,并在按下Esc键时终止线程的运行:
import threading
from pynput import keyboard
# 定义周期性线程的函数
def periodic_function():
count = 0
while not exit_flag.is_set():
print("Count:", count)
count += 1
exit_flag.wait(1) # 等待1秒钟
# 创建一个Event对象,用于设置线程退出标志
exit_flag = threading.Event()
# 创建并启动线程
thread = threading.Thread(target=periodic_function)
thread.start()
# 监听键盘事件
def on_key_press(key):
if key == keyboard.Key.esc:
exit_flag.set() # 设置线程退出标志
print("Exiting...")
return False
# 创建键盘监听器
listener = keyboard.Listener(on_press=on_key_press)
listener.start()
# 等待线程结束
thread.join()
在上面的示例代码中,periodic_function
是一个周期性线程的函数,它会在每次循环中打印一个计数器的值,并使用exit_flag.wait(1)
来让线程等待1秒钟。exit_flag
是一个Event对象,用于设置线程退出标志。
在主线程中,首先创建并启动了周期性线程。然后,创建了一个键盘监听器,并设置了一个回调函数on_key_press
来处理按键事件。在on_key_press
函数中,如果按下的是Esc键,则设置了线程退出标志,并打印一条退出信息。最后,调用thread.join()
来等待周期性线程结束。
运行示例代码后,周期性线程会每隔一秒钟打印一个计数器的值。当按下Esc键时,线程会被终止,并打印退出信息。
上一篇:按下esc键无法退出的键盘记录器