当运行下面的代码时,为什么time.sleep()在信号警报到达时立即终止,而不是在信号处理程序完成print signum之后继续
import signal, time
def handler (signum, frame):
print signum
def main ():
signal.signal(signal.SIGALRM, handler)
signal.alarm(2)
time.sleep(10)
print "End of main"
if __name__ == "__main__":
main()发布于 2018-10-09 20:32:58
sleep()会导致调用线程休眠,直到经过以秒为单位指定的实时秒数,或者直到一个不可忽略的信号到达。
您可以定义自定义睡眠函数,如下所示:
import datetime
import time
def busy_sleep(seconds):
start_time = datetime.datetime.now()
seconds_slept = 0
while seconds_slept < seconds:
time.sleep(seconds - seconds_slept)
seconds_slept = (datetime.datetime.now() - start_time).total_seconds()只需调用busy_sleep(10)而不是time.sleep(10)。
https://stackoverflow.com/questions/52720961
复制相似问题