我在终端会话中有一个长时间运行的Python脚本(主机是一个FreeBSD盒子),它每9分钟执行一次任务。现在,我希望能够随时中断该睡眠呼叫,以便它立即执行任务。
我该怎么做?捕获 Ctrl + C 不是一个选项,因为我需要它来停止程序(而不是仅仅中断睡眠)。我可以用终端窗口和键盘做的任何其他事情都可以。
答案 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
。