我需要每 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] 删除。
我来说两句