Python:等待按键或超时

5 投票
1 回答
3578 浏览
提问于 2025-04-17 03:24

我有一个在终端里运行的Python脚本,这个脚本每9分钟会执行一次任务。现在,我想随时打断这个等待的过程,让它立刻执行任务。

我该怎么做呢?按下Ctrl+C不行,因为我需要的是停止程序,而不是单纯打断等待。那还有什么其他方法可以在终端窗口和键盘上操作呢?

1 个回答

3

根据托马斯的建议,我想出了这个函数:

import signal

def input_or_timeout(timeout):
    def nothing(sig, frame): pass
    signal.signal(signal.SIGALRM, nothing)
    signal.alarm(timeout)
    try:
        raw_input()
        signal.alarm(0)
    except (IOError, EOFError): pass

这个函数最多会等待输入timeout秒钟。

在Windows系统下,我想你可以用msvcrt里的getch()来替换raw_input()

撰写回答