我有一个函数F1连续循环(while循环)。我设置了一个条件,如果满足,则在函数F1中调用另一个函数F2。一旦被调用,即使在3秒钟内再次满足条件,也不应在几秒钟(例如3秒钟)内再次调用函数F2。但是功能F1必须连续循环。如何实现?
调用F2时节省时间(例如time_f2
)。下次满足条件时,现在将其与time_f2
进行比较,仅当差异超过3秒时才调用F2。
您可以尝试以下类似方法。我已经向F1引入了新参数。在<condition met>
中,您将编写自己的条件。
from datetime import datetime
first_time_f2_call = True
time_f2_call = datetime.now()
while True:
time_f2_call = f1(first_time_f2_call, time_f2_call)
first_time_f2_call = False
def f1(first_f2_call, last_f2_call_time):
if first_f2_call:
time_diff = datetime.now() - datetime.now()
else:
time_diff = datetime.now() - last_f2_call_time
if <condition met> and (first_f2_call or time_diff.seconds > 3):
f2()
last_f2_call_time = datetime.now()
.
.
.
return last_f2_call_time
当然,有更好的方法,但是您可以使用time.time()观察至少3秒钟的差异并重置标志
import time
tf = 0
ti = 0
while 1:
print('your_main_stuff()')
yourcondition = True
if yourcondition and tf==ti:
print('do_your_stuff_once_at_3_sec()')
count = True
ti = time.time()
if count:
tf = time.time()
if tf-ti>3:
tf = time.time()
ti = time.time()
count = False