在python中以特定间隔运行任务

时间:2009-06-24 14:59:02

标签: python timer

  

可能重复:
  Suggestions for a Cron like scheduler in Python?

将函数作为后台任务定期运行的最佳pythonic方法是什么?有一些想法here,但它们对我来说都显得相当难看。并且不完整。

java Timer类有一个非常完整的解决方案。有人知道类似的python类吗?

5 个答案:

答案 0 :(得分:12)

有一个方便的事件调度程序可以执行您需要的操作。这是文档的链接:

http://docs.python.org/library/sched.html

答案 1 :(得分:9)

尝试multiprocessing模块。

from multiprocessing import Process
import time

def doWork():
    while True:
        print "working...."
        time.sleep(10)



if __name__ == "__main__":
    p = Process(target=doWork)
    p.start()

    while True:
        time.sleep(60)

答案 2 :(得分:7)

许多程序员试图避免使用多线程代码,因为它在命令式编程中容易出错。

如果您想在单线程环境中执行计划任务,那么您可能需要某种“Reactor”。您可能想要使用像Twisted这样的现成品。

然后它将是您的反应堆提供的基本功能,例如(使用pygame):

  

pygame.time.set_timer - 在事件队列上重复创建一个事件

答案 3 :(得分:7)

不直接回答这个问题。

在Linux / Unix操作系统上,有几种方法可以这样做,通常我只是正常编写程序/脚本,然后将其添加到cron或类似的东西(如OS X上的launchd

问题的答案从这里开始。

使用标准的python sched模块 - standard library documentation描述了一些漂亮的解决方案。

答案 4 :(得分:2)

Python在线程模块中有一个Timer类,但这是一次性计时器,所以你可以更好地做一些看到链接的东西。 http://code.activestate.com/recipes/65222/

为什么你认为这很难看,一旦你写完这样的类用法就像在java中一样简单。

如果您在某些GUI中使用它,例如wxPython比它有wx.Timer你可以直接使用