У меня есть приложение (Jupyter), которое я хочу запустить в отдельном потоке.Приложение использует PyZMQ и Tornado.В настоящее время приложение не будет выполняться в отдельном потоке, потому что поток не имеет текущего события.Фрагмент из функции инициализации приложения:
def initialize(self, argv=None):
super(IPKernelApp, self).initialize(argv)
if self.subapp is not None:
return
# register zmq IOLoop with tornado
zmq_ioloop.install()
self.init_blackhole()
self.init_connection_file()
self.init_poller()
self.init_sockets()
Я обновил его до:
def initialize(self, argv=None):
super(IPKernelApp, self).initialize(argv)
if self.subapp is not None:
return
# create a new event loop for the current thread
io_loop = ioloop.IOLoop()
io_loop.make_current()
# register zmq IOLoop with tornado
zmq_ioloop.install()
self.init_blackhole()
self.init_connection_file()
self.init_poller()
self.init_sockets()
Кажется, это работает.Но, возможно, сейчас есть 2 цикла событий.Это правильный подход?Как получить eventloop основного потока?