Запустить приложение pyzmq в отдельном потоке - PullRequest
0 голосов
/ 05 мая 2019

У меня есть приложение (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 основного потока?

...