![](/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.