我有一个python程序,我想每10秒运行一次,就像cron job一样。我不能在循环中使用sleep,因为时间间隔会变得不确定。我现在这样做的方式是这样的:
interval = 10.0
next = time.time()
while True:
now = time.time()
if now < next:
time.sleep(next - now)
t = Thread(target=control_lights,)
t.start()# start a thread
next += interval
它生成一个执行contro_lights函数的新线程。问题是随着时间的推移,python进程的数量增加并占用内存/ CPU。有什么好办法吗?非常感谢
答案 0 :(得分:1)
看看一个名为The Fat Controller的程序,它是一个类似于CRON的调度程序,但有更多选项。间隔可以从上一次运行结束(如for循环)或每隔x秒定期测量,我认为这是你想要的。在这种情况下特别有用的是,如果其中一个进程花费的时间超过x秒,您可以告诉Fat Controller如何处理:
文档中应该有大量关于如何设置它的信息。
答案 1 :(得分:1)
可能会尝试使用supervisord或god来制作这个剧本吗?在类UNIX操作系统上使用和控制许多进程非常简单
答案 2 :(得分:0)
您可以每10秒运行一次cron作业,只需将第二个参数设置为&#39; 0/10&#39;。它将在0,10,20等运行
#run every 10 seconds from mon-fri, between 8-17
CronTrigger(day_of_week='mon-fri', hour='8-17', second='0/10')