Python:等待按键或直到超时

zne*_*eak 5 python

我在终端会话中有一个长时间运行的Python脚本(主机是一个FreeBSD盒子),它每9分钟执行一次任务.现在,我希望能够随时中断该睡眠呼叫,以便它立即执行任务.

我怎样才能做到这一点?捕捉Ctrl+ C不是一个选项,因为我需要它来停止程序(而不是仅仅打断睡眠).我可以用终端窗口和键盘做的任何其他事情都可以.

zne*_*eak 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
Run Code Online (Sandbox Code Playgroud)

它等待输入最多几timeout秒钟。

在 Windows 下,我想你可以替换raw_input()getch()from msvcrt