gobject.MainLoop和tornado.IOLoop立刻?

时间:2013-11-26 09:46:28

标签: python asynchronous websocket pygtk tornado

如何在一个应用程序中运行两个事件循环?

我需要在一个Python程序中使用tornado.IOLoop(WebSocket客户端)和gobject.MainLoop(pygtk)。

更新:首选无线解决方案。

3 个答案:

答案 0 :(得分:2)

您可以试试我的gioloop.py。这是一个gobject.io_add_watch的IOLoop实现,因此它是一个单线程解决方案。

答案 1 :(得分:1)

您可以使用线程

import threading
threading.Thread(target=my_ioloop.start).start()

答案 2 :(得分:0)

这有点混乱,但你可以在一个带有Twisted的线程中在gobject事件循环之上运行Tornado。按照http://www.tornadoweb.org/en/stable/twisted.html#tornado-on-twisted处的“扭曲的龙卷风”方向,使用Twisted的gireactor(http://twistedmatrix.com/documents/13.1.0/api/twisted.internet.gireactor.html)。

也可以编写一个直接使用gobject而不经过Twisted的IOLoop实现,但据我所知还没有人完成。