задержка цикла for внутри цикла while

Мне нужно сделать так чтобы выделенный на картинке цикл for имел кд(задержку) 1 секунду перед повторным выполнением, но при этом мне нельзя останавливать общий цикл While. Я пробовал реализовать это используя asyncio, но дело в том что мне нельзя вытаскивать этот цикл for за рамки цикла while.

Code


Ответы (2 шт):

Автор решения: Kostya_200808

Если я правильно понял, то тебе нужно сделать так, чтобы for работал только каждую секунду, но нельзя его перемещать за цикл. Можно использовать проверку на время. За циклом создаём настоящее время с помощью библиотеки time, а потом сверяем время так, чтобы переменная была меньше настоящего времени на одну секунду. Пример:

import time
Time = time.time()
Sum = 0
while True:
    Sum += 1
    if Time <= time.time() - 1:
        Time = time.time()
        print(f"За секунду прошло {Sum} циклов.")
        Sum = 0
→ Ссылка
Автор решения: Alex Bond

Как было упомянуто в комментариях нельзя остановить for при этом что бы while работал непрерывно. Ты можешь обернуть for в асинхроную функцию, передавать ей значения, и внутри прописать await. Тем самым будет обещание выполниться через нужное время. Но while будет тебе плодить новые функции и у тебя будет умножаться очередь эвейтов что скорей всего крашнется через пару часов. По этому while тоже надо ставить на паузу.

→ Ссылка