代码之家  ›  专栏  ›  技术社区  ›  Ray Salemi

我可以在没有asyncio的情况下运行Python协程吗?

  •  0
  • Ray Salemi  · 技术社区  · 5 年前

    我可以不使用asyncio运行这个程序吗?

    import time
    
    async def clk():
        time.sleep(0.1)
    
    async def process():
        for _ in range(2):
            await clk();
            time.sleep(0.2)
            print("I am DONE waiting!")
    
    def run():
        await process()
    
    if __name__ == "__main__":
        run()
    

    我得到一个错误 run() 未定义为 async await process .

    0 回复  |  直到 5 年前
        1
  •  2
  •   Berislav Lopac    5 年前

    要运行异步函数,需要提供一个事件循环。它的主要功能之一 asyncio asyncio.run(process) 它在内部提供一个循环。

    这个代码在笔记本中工作的原因是Jupyter(以及 ipython REPL)在引擎盖下提供一个回路;还有其他提供循环的第三方库,例如 trio curio

    也就是说,您可以自由地提供自己的循环,而不是使用库,如中所示 this answer 异步