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

Python无限循环脚本sleep时无法响应F9终止按键问题求助

解决Python脚本休眠时无法响应终止按键的问题

你的问题核心在于time.sleep(5)是阻塞式操作——这段时间里程序完全暂停,不会执行任何代码,自然也无法检测到F9按键的按下。下面提供两种可行的解决方案:

方案1:拆分长休眠为小间隔循环检查

把5秒的长休眠拆分成多个0.1秒的小休眠,每次休眠后立即检查按键状态,这样能保证按键操作被及时响应:

from PIL import ImageGrab
import time
import keyboard

while True:
    im = ImageGrab.grab()
    fname = "C:\\Users\\User\\Desktop\\pythontestscreenshot\\capture1.png"
    im.save(fname)
    
    # 替换原time.sleep(5),每0.1秒检查一次F9按键
    for _ in range(50):  # 50 × 0.1秒 = 5秒
        if keyboard.is_pressed("F9"):
            exit()  # 触发终止
        time.sleep(0.1)

方案2:使用按键回调+计时等待(更优雅)

通过注册F9按键的回调函数设置终止标志,结合时间戳实现非阻塞的5秒等待,同时监听终止信号:

from PIL import ImageGrab
import time
import keyboard

stop_script = False

def handle_f9_press(event):
    global stop_script
    if event.name.lower() == "f9":
        stop_script = True

# 注册F9按键的按下回调
keyboard.on_press(handle_f9_press)

while not stop_script:
    im = ImageGrab.grab()
    fname = "C:\\Users\\User\\Desktop\\pythontestscreenshot\\capture1.png"
    im.save(fname)
    
    start_wait = time.time()
    # 等待5秒或直到终止标志被触发
    while time.time() - start_wait < 5 and not stop_script:
        time.sleep(0.1)

# 清理按键监听
keyboard.unhook_all()

两种方案都能解决休眠期间无法响应按键的问题,方案2的扩展性更好(比如后续要添加其他终止按键时更方便)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 20:15:15