Python:等待按键或直到超时

时间:2011-09-30 04:48:56

标签: python

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

我该怎么做?捕获 Ctrl + C 不是一个选项,因为我需要它来停止程序(而不是仅仅中断睡眠)。我可以用终端窗口和键盘做的任何其他事情都可以。

1 个答案:

答案 0 :(得分: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下,我认为您可以使用raw_input()中的getch()替换msvcrt