信号模块如何实现定时器

时间:2017-03-21 14:07:42

标签: python multithreading signals

这是我的计时器代码

import signal, time


def timeoutHandler():
    raise Exception()

try:
    signal.signal(signal.SIGALRM, timeoutHandler)
    signal.setitimer(signal.ITIMER_REAL, 5)

    count = 0
    while True:
        print count
        count += 1
        time.sleep(1)
except Exception as e:
    print e

效果很好,困扰我的是如何通过信号模块实现(我对信号没有很好的了解)

我认为实施就像

  1. 信号模块将在单独的线程中监视SIGALRM

  2. 一旦收到,就有机会执行处理程序

  3. 我不明白它如何将其控制权恢复到主线程(捕获异常)

  4. 肯定的线程不是这里的图片,我认为我在这里缺少一些操作系统概念。

1 个答案:

答案 0 :(得分:0)

“单独的线程”是操作系统本身。 style有效地要求操作系统在5秒内向此过程发送signal.settimer