Ubuntu上的Python Cron作业

2024-04-19 23:38:30 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个python程序,我想每10秒运行一次,就像cron job一样。我不能在循环中使用睡眠,因为时间间隔会变得不确定。我现在的做法是这样的:

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 

它生成一个新线程来执行control\u lights函数。问题是随着时间的推移,python进程的数量会增加,占用内存/CPU。有什么好办法吗?非常感谢


Tags: 程序true间隔iftime时间jobstart
3条回答

您可以每10秒运行一次cron作业,只需将第二个参数设置为“0/10”。它将运行在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')

看看一个名为The Fat Controller的程序,它是一个类似于CRON的调度程序,但是有更多的选项。间隔可以从上一次运行结束时开始测量(比如for循环),也可以每隔x秒定期测量一次,我想这是您想要的。在这种情况下特别有用的是,您可以告诉Fat控制器,如果其中一个进程花费的时间超过x秒,该怎么办:

  • 仍要运行新实例(将并行进程增加到指定的最大值)
  • 等待上一个完成
  • 干掉前一个,开始一个新的

文档中应该有很多关于如何设置它的信息。在

这个剧本可以试试看导演还是上帝?在类UNIX操作系统上使用和控制许多进程非常简单

相关问题 更多 >