![](/img/trans.png)
[英]How to close and rerun a python exe after every 5min using .bat file
[英]Python For Loop List, Function Every 5min
matches = []
done = []
for item in matches:
dofunctioneveryloop()
done.extent(item)
dofunctiononce5min()
如何在此循环内每5分钟执行一次dofunctiononce5min()? 这是备份到文件的功能吗?
不确定我是否理解这个问题。 我假定您希望此函数每五分钟执行一次,而不管它真正被调用的频率如何。
这可能是矫kill过正,但是为什么不使用装饰器呢? 这将为“装饰”功能创建一个新功能,如果自上次执行以来已过X秒,则将执行原始功能。 这将确保该函数每5分钟(或传递给装饰器的时间间隔以秒为单位)执行一次,无论是在该循环中还是在其他位置调用。
import time
def onceEveryXSeconds(seconds): # this creates the decorator
def wrapper(f): # decorator for given 'seconds'
f.last_execution = 0 # memorize last execution time
def decorated(*args, **kwargs): # the 'decorated' function
if f.last_execution < time.time() - seconds:
f.last_execution = time.time()
return f(*args, **kwargs)
return decorated
return wrapper
用法:
@onceEveryXSeconds(3)
def function(foo):
print foo
while True:
print "loop"
function("Hello again")
time.sleep(1)
输出,带有@onceEveryXSeconds(3)
loop
Hello again
loop
loop
loop
Hello again
loop
...
不建议您这样做。 最好的方法也许是在操作系统上调度它,并定期运行它。
无论如何,如果要每x次运行一条语句,这是一个示例
import time
for i in range(5):
print i
time.sleep(3) # seconds
作为参数的时间应小数,例如0.5秒。
假设循环花费的时间超过五分钟,则可以使用time.time()确定何时结束了5分钟。
import time
matches = []
done = []
starttime = time.time()
for item in matches:
dofunctioneveryloop()
done.extent(item)
if time.time() - starttime > 300:
dofunctiononce5min()
starttime = time.time()
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.