如何每 n 秒运行一次耗时的进程?

亚当122

我需要每 n 秒运行一个进程。我认为 Threading.timer 是最好的方法。但是当我运行我的命令时,它不会每 n 秒运行一次,而是开始一遍又一遍地运行,时间比给定的 n 和循环不可阻挡的时间短得多。这是我的代码:

#!/usr/bin/python

import threading
import time

brake = 10
k = int(5)

def printit():
    for x in range(k):
        threading.Timer((int(brake)), printit).start()
        print "Hello World!"  
        #i have a longer process here, it takes a few seconds to run
        #i give more than double of the time needed to run it
printit()

所以我想要发生的是:它打印 Hello world 5 次,每次之间有 10 秒的刹车。但相反,它打印得更快并且不会停止。我是否遗漏了一些参数,或者我试图运行的进程有问题?我还要感谢其他任何更简单的方法,每n秒运行一次proess。

虽然您似乎正在使用python2.x(将print作为关键字),因此睡眠是个好主意,但如果您使用的是py3.4及更高版本,则存在asyncio

import asyncio

def do_task(end_time, loop):
    print('hello world!')
    if (loop.time() + 1.0) < end_time:
        loop.call_later(1, do_task, end_time, loop)
    else:
        loop.stop()

loop = asyncio.get_event_loop()

end_time = loop.time() + 10.0
loop.call_soon(do_task, end_time, loop)

loop.run_forever()
loop.close()

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章