我问了一个非常类似的问题earlier,但项目范围正在快速增长,超出了信号可以得到的地方(我认为)。基本上,我的程序将在三个不同的时间间隔内完成工作;每15秒一个功能,一个功能可配置间隔(一般为5到60秒),每小时或两个功能一个功能。
从直观的角度来看,似乎多个带有单独函数的signal.signal()调用不会让我走得太远:ITIMER_REAL计时器只发出一个信号 - SIGALRM,因此没有办法区分哪个itimer正在发出信号。由于15秒间隔函数需要运行而不管其他函数可能发生什么,这使我可以选择多线程或多处理。
我倾向于多处理,希望我能够产生三个子进程,每个进程都有自己的信号/ itimer间隔,让他们每个人都在闲暇时做他们的工作。这可行吗?如果没有,那么这三个函数以期望的间隔运行的最佳方法是什么?
答案 0 :(得分:3)
这是可行的,但是如果三个循环没有进行任何繁重的计算(需要多核功能),你也可以启动三个线程。
或者,您可以让一个循环使用priority queue处理此问题。将(time, task)
对推入队列,其中task
是要完成的任务的某些描述。然后,循环:
time
到期