首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python信号事件终止time.sleep()

Python信号事件终止time.sleep()
EN

Stack Overflow用户
提问于 2018-10-09 20:21:59
回答 1查看 452关注 0票数 0

当运行下面的代码时,为什么time.sleep()在信号警报到达时立即终止,而不是在信号处理程序完成print signum之后继续

代码语言:javascript
复制
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()
EN

回答 1

Stack Overflow用户

发布于 2018-10-09 20:32:58

sleep()会导致调用线程休眠,直到经过以秒为单位指定的实时秒数,或者直到一个不可忽略的信号到达。

您可以定义自定义睡眠函数,如下所示:

代码语言:javascript
复制
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)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52720961

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档