@Renat871

Как виполнять функцию в цикле только спустя время?

Есть цикл.
for _ in range(10000):
    foo()

и функция.
def foo():
    "какой-то код"


Надо что б функция виполнялась только раз в пол секунди, а цикл продолжался

Пробовал вот так:
def foo():
    global last_click_time

        try:
            print("last", last_click_time)
        except:
            last_click_time = time.time()

        call_time = time.time() - last_click_time
        print("call", call_time)

        if not call_time < 0.5:
            return

    last_click_time = time.time()

но тогда цикл становится очень медленним, и вообще мне кажется что метод не правильний.
Спасибо за помощь!
  • Вопрос задан
  • 68 просмотров
Решения вопроса 1
@twistfire92
Python backend developer
если не уходить в асинхронность (хотя это именно тот случай, где она нужна), и максимально тупо и в лоб, то вот:
from datetime import datetime

def foo():
    print('ok ')

start = datetime.now()

for i in range(100000000):
    
    delta = datetime.now() - start
    if delta.seconds > 0:
        foo()
        start = datetime.now()
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@igor6130
Добавьте time.sleep(0.5) в то место, где нужна пауза.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы