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

its*_*dok 15 python timer

可能重复:
对Python中的Cron调度程序的建议?

安排函数作为后台任务定期运行的最pythonic方法是什么?有一些想法在这里,但他们似乎都比较难看我.而且不完整.

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

dbo*_*rba 12

有一个方便的事件调度程序可能会做你需要的.这是文档的链接:

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


Tom*_*lis 9

尝试多处理模块.

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)
Run Code Online (Sandbox Code Playgroud)


yai*_*chu 7

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

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

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

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

  • "许多程序员都试图避免使用多线程代码,因为它在命令式编程中容易出错." 稍微偏离主题,但我不认为这是避免多线程的一个很好的理由.关键是要正确地完成它并完全理解内存一致性和锁定语义.我同意在这种类型的编程经验有限的程序员应该在生产代码中使用这些技术之前大量投入学习和实践.如果您想充分利用资源,那么在多核编程时代避免它并不是一个可行的选择. (6认同)
  • @Scruffers多线程很难做到(并且可能只是[很难修复](http://stackoverflow.com/questions/3830347/can-a-multi-threaded-program-ever-be-deterministic) ),还有许多其他方法可以在线程之外使用多个核心 (3认同)

zer*_*ble 7

不直接回答这个问题.

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

这个问题的答案从这里开始.

使用标准的python sched模块 - 标准库文档描述了一些漂亮的解决方案.

  • +1:使用cron - 它有效. (3认同)