如何在一个应用程序中运行两个事件循环?
我需要在一个Python程序中使用tornado.IOLoop(WebSocket客户端)和gobject.MainLoop(pygtk)。
更新:首选无线解决方案。
答案 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实现,但据我所知还没有人完成。