Временное ограничение цикла
Есть скрипт, который ожидает появление на экране нужного элемента:
guard_placeholder = None
while guard_placeholder is None:
guard_placeholder = pyautogui.locateCenterOnScreen('images/.....png', confidence=0.8)
Как мне ограничить по времени: допустим если нет объекта 60сек, прервать цикл (работу скрипта)
Ответы (1 шт):
Автор решения: Inventor
→ Ссылка
Асинхронный вариант решения задачи. Пока ваш блок загружается вы можете делать что-то ещё =)
# python3.7 но можно адаптировать и под более рание версии
import asyncio
from time import time
async def show_block(wait_time, interval):
# wait_time указывает сколько нужно ждать изменения переменной в секундах
# interval - показывает раз в сколько секунд проверять значение перменной. 0 - следить без остановки. Значеие в секундах
# Переменная за которой нужно следить
global guard_placeholder
start_time = time()
while start_time + 60 < time():
if guard_placeholder:
return 'success'
await asyncio.sleep(interval)
return 'fail'
block_showed = asyncio.run(show_block(60, 0.1))
if block_showed == 'success':
print('Блок показан!')
else:
print('Что-то пошло не так, блок не был отображён')