暂停调用的函数几秒钟

问题描述 投票:0回答:3

我有一个函数F1连续循环(while循环)。我设置了一个条件,如果满足,则在函数F1中调用另一个函数F2。一旦被调用,即使在3秒钟内再次满足条件,也不应在几秒钟(例如3秒钟)内再次调用函数F2。但是功能F1必须连续循环。如何实现?

python
3个回答
2
投票

调用F2时节省时间(例如time_f2)。下次满足条件时,现在将其与time_f2进行比较,仅当差异超过3秒时才调用F2。


0
投票

您可以尝试以下类似方法。我已经向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

0
投票

当然,有更好的方法,但是您可以使用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   
© www.soinside.com 2019 - 2024. All rights reserved.