在等待异步函数返回时如何暂停循环?

时间:2019-10-17 22:05:36

标签: python python-asyncio

我正在使用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)

基本上,mxmymh通过在异步函数(update_robot)中运行一些代码来收敛到机器人的实际位置。但是,while循环不会等待函数返回,而是在循环的另一个迭代中再次调用该函数。这会弄乱mxmymh的值。我想知道是否有必要让while循环在继续之前等待函数返回。

我尝试使用update_robotasyncio.run_coroutine_threadsafe添加到当前异步函数的调用中,但是没有成功。

有人遇到类似问题并且知道如何解决吗?

0 个答案:

没有答案