Создание сокета ZMQ Context намного медленнее на новом компьютере - PullRequest
1 голос
/ 07 марта 2019

Это было первоначально замечено в Python, но с тех пор было воспроизведено в C ++.Вот модульный тест, который перерабатывает и копирует поведение на моем новом ноутбуке.Это просто локальные сокеты.

def test_zmq_publisher_duration(self):
    max_duration = 1.0
    t0 = time.time()
    socket = zmq.Context.instance().socket(zmq.PUB)
    duration = time.time() - t0
    print(socket)
    self.assertLess(duration, max_duration, msg="socket() took too long.")

На других компьютерах и на моем старом ноутбуке это выполняется за доли секунды.Однако на моем новом ноутбуке (мощная Dell Precision 7730) это занимает около 44 секунд .Я получаю аналогичные результаты при создании сокета zmq.SUB (подписчик).

Если я ухожу в вызов socket (), два оператора, которые все время потребляют, выглядят следующим образом:

zmq/sugar/context.py
   class Context
      def instance(cls, io_threads=1):
         ...
         cls._instance = cls(io_threads=io_threads)
         ...

      def socket(self, socket_type, **kwargs)
         ...
         s = self._socket_class(self, socket_type, **kwargs)
         ...

Я озадачен и сбит с толку.Все остальное на ноутбуке вроде бы нормально.Возможно, у меня pip установлен мои зависимые модули каким-то немного другим способом?Может ли ранее установленный модуль zmq против pyzmq вызывать проблемы?Возможно, это что-то в настройке ноутбука от нашего ИТ-отдела?Я пытался работать от имени администратора, запускать из PyCharm, запускать из командной строки и отключать сетевой кабель во время работы.

Я относительно новичок в Python и ZMQ, но мы разрабатывали этот проектв течение нескольких месяцев без проблем с производительностью.В рабочем коде у нас есть класс MessageBroker, который содержит большую часть архитектуры pub / sub.Вышеприведенный модульный тест был создан простым извлечением первой значимой строки кода из нашего конструктора MessageBroker.Publisher (который создает сокет).Несмотря на то, что создание сокетов на этом компьютере медленное, наше приложение все равно запускается и работает правильно после создания сокетов.Запуск приложения занимает всего 7 минут.

Я подозреваю, что закон отладки Эда: «Чем более странно поведение, тем глупее ошибка».

1 Ответ

0 голосов
/ 08 марта 2019

Это, очевидно, проблема с прошивкой Windows 10 или ноутбука. Некоторые обновления были отправлены ИТ-отделом, и на следующий день все заработало нормально. Вот элементы, которые были установлены для просмотра событий:

  • Установлено KB4456655: обновление стека обслуживания для Windows 10, версия 1803: 11 сентября 2018 г. (улучшения стабильности)
  • Установлено KB4462930: обновление для Adobe Flash Player
  • Установлено KB4100347: обновления микрокода Intel
  • Установлено KB4485449: обновление стека обслуживания для Windows 10 v1803 - 12 февраля
  • Установлено KB4487017: (то же описание, что и KB4485449)
  • Установлено KB4487038: обновление безопасности для Adobe Flash Player
...