这是我的计时器代码
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
它工作得很好,困扰我的是信号模块如何实现的(我对信号没有很好的了解(
我以为实现会像
信号模块将在单独的线程中监视 SIGALRM
一旦它收到一个,它就有机会执行处理程序
我不明白的是它如何将其控制权恢复回主线程(捕获异常(
当然线程不是这里的图片,我认为我在这里缺少一些操作系统概念。
"单独的线程"是操作系统本身。 signal.settimer
有效地要求操作系统在 5 秒内向此过程发送SIGALRM
。