我开始学习 Python(新手),所以对不同的模块等不太了解。
我要模拟的场景:
我有一个程序prg1.py
,我想运行一些用户定义的时间,比如t
秒。在这段时间(t
秒)之后,程序应该退出。为此,我signal.signal()
用来创建警报。下面是工作代码:
进口信号 进口时间 导入系统 def 接收警报(信号,堆栈): sys.exit('退出!') signal.signal(signal.SIGALRM,receive_alarm) 信号.警报(10) 而1: 打印'工作...' 时间.sleep(1)
程序运行 10 秒,然后按预期退出。
注意:下面的 while 循环仅用于测试,它将被我的工作代码替换。
现在我想实现多个信号以在不同的时间间隔执行不同的任务。
eg In EVERY
:
5
seconds: 执行特定的函数fun1()
10
seconds: 执行特定的函数fun2()
, 依此类推...(我想在程序中执行的任务)
我尝试添加另一个警报,如下所示,但没有奏效:
import signal
import time
import sys
def receive_alarm(signum, stack):
sys.exit('Exiting!')
def receive_alarm_two(signup, stack):
print 'Call to other functions!'
signal.signal(signal.SIGALRM, receive_alarm)
signal.alarm(10)
# Second Alarm
signal.signal(signal.SIGALRM, receive_alarm_two)
signal.alarm(2)
while 1:
print 'Working...'
time.sleep(1)
这不行!简单退出,没有任何错误或退出消息:(
如何实现此功能?
笔记:Use of Threads is restricted.
笔记:As I want the program to keep listening to different signals, it can't sleep i.e. cannot use time.sleep().