Как сделать паузу в цикле, пока я ожидаю возврата асинхронной функции? - PullRequest
0 голосов
/ 18 октября 2019

Я локализую робота, используя фильтр частиц в Python. Краткий код для этого здесь:

    mx = my = mh = -10000
    m_confident = False

    loop = asyncio.get_event_loop()

    while not m_confident:
        (mx, my, mh, m_confident) = await update_robot(robot, camera_settings)

В основном, mx, my и mh сходятся к фактическому местоположению робота, выполняя некоторый код в асинхронной функции (update_robot). Однако цикл while не ожидает возврата функции, а скорее вызывает функцию снова в другой итерации цикла. Это портит значения mx, my и mh. Мне было интересно, есть ли в любом случае заставить цикл while ждать возврата функции, прежде чем продолжить.

Я попытался добавить update_robot к текущему вызову асинхронной функции, используя asyncio.run_coroutine_threadsafe, но безуспешно.

Кто-нибудь сталкивался с чем-то подобным и знает, как это исправить?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...