Это было первоначально замечено в 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 минут.
Я подозреваю, что закон отладки Эда: «Чем более странно поведение, тем глупее ошибка».