如何使计时器中断等待进程?

时间:2012-01-18 05:50:58

标签: python timer wait interrupt alarm

我正在尝试在使用标准读取 - 评估 - 打印循环的程序中实现警报。

代码示例如下:

while True:
    input = get_input() # A function that waits for input and 
                        # returns the input once it is obtained
    set_alarm(interpret(input)) # A function that sets the alarm

Set_alarm使用threading.Timer类。但是,这有一个问题。定时器按时激活,但是当get_input()等待输入时,定时器将等待该过程完成,然后再生成所需的输出。

有没有办法让定时器的回调函数中断等待功能并在激活后立即产生输出?

谢谢!

1 个答案:

答案 0 :(得分:0)

各个纯Python步骤之间的

CPython checks for signals。 get_input()可能拥有全局解释器锁,并且信号处理将被延迟,直到get_input返回。

解决方案是使用非阻塞调用以尊重超时的方式征求用户输入。根据您的平台,您可以使用kbhit或选择(使用stdin)来获取用户输入。