在异步中迷失。在
我同时在学习Kivy和asyncio,并陷入了解决运行Kivy和运行asyncio循环的问题,因为无论我如何处理,它们都是阻塞调用,需要按顺序执行(好吧,我希望我错了)
loop = asyncio.get_event_loop()
loop.call_soon(MyAsyncApp().run())
loop.run_forever()
我当前的尝试导致应用程序被启动,但没有执行协同程序,例如,当我单击“连接”按钮时,我应该开始使用loop.call_soon
来调度和执行任务,但是什么都没有发生。在
有人能看一下我的代码并提出解决问题的正确方法吗?在
发生这种情况是因为
MyAsyncApp().run()
阻塞了执行流,并且控制永远不会返回到asyncio的事件循环。这就是所有事件循环的工作原理。在与手动尝试交叉两个循环相比,更短的方法是使用现有的尝试:
https://github.com/kivy/kivy/pull/5241
这个PR来自Kivy的一个开发人员,包含了工作实现以及解释和使用示例。在
然而,它还没有合并到主控:你需要用这个公关手动构建Kivy。在
相关问题 更多 >
编程相关推荐