异步循环 + GObject.MainLoop

C.H*_*C.H 6 pygobject python-3.x python-asyncio

我用异步循环编写了一些代码:

loop = asyncio.get_event_loop()
# bla coroutines
loop.run_forever()
Run Code Online (Sandbox Code Playgroud)

现在,有人给了我使用 GObject.MainLoop() 的部分代码

l = GObject.MainLoop()
# functions using gi.repository I cannot modify, bla
l.run()
Run Code Online (Sandbox Code Playgroud)

我应该将此代码集成到与我的软件相同的软件中(使用 asyncio)。这些代码必须同时运行。代码部分必须交换对象。

我不确定哪种解决方案会被采用,或者至少不会太难看?

ps:这段代码必须在windows操作系统和python3.4上运行,所以我不能使用glub。我想我可以使用线程,但我想知道是否还有其他方法?

C.H*_*C.H 1

最后,它可以与 2 个线程一起使用,就像我之前的评论一样。但是队列(asyncio.Queue和queue.Queue)之间的通信确实太长了。我发现了 janus 库(与 asyncio 兼容的线程安全队列),它工作得很好。