在Python3.5中, time.sleep(secs) 的行为被更改:
time.sleep(secs)
这个函数现在至少睡眠 secs ,即使睡眠被信号打断,除非信号处理程序引发异常。
secs
(资料来源:)
那么,在信号处理程序返回(如Python3.4或更低版本)之后的剩余几秒钟,我如何使 time.sleep() 而不是 睡眠呢?
time.sleep()
我想出的解决方案如下所示。这个示例工作得很完美,但在实际代码中,这是不切实际的,因为引发异常可能会影响代码中不需要的部分。
import signal import time class SleepInterruptException(Exception): def signal_handler(signal, frame) -> None: raise SleepInterruptException()