最初是在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.")
在其他计算机和我的旧笔记本电脑上,运行时间为 fraction (秒)。但是,在我的新笔记本电脑(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会引起问题吗?也许这是我们IT部门在笔记本电脑中安装的东西?我尝试过以管理员身份运行,从PyCharm内部运行,从命令行运行以及在运行时拔下网络电缆。
我对Python和ZMQ还是比较陌生,但是我们已经在这个项目上进行了几个月的开发,并且没有任何性能问题。在生产代码中,我们有一个MessageBroker类,其中包含大多数pub / sub体系结构。上面的单元测试是通过从我们的MessageBroker.Publisher构造函数(创建套接字)中简单地提取第一行代码来创建的。即使在此计算机上套接字创建很慢,在创建套接字之后,我们的应用程序仍然可以启动并正常运行。只需7分钟即可启动应用程序。
我怀疑埃德的调试法则:“行为越怪异,错误就越愚蠢。”
答案 0 :(得分:0)
这显然是Windows 10或笔记本电脑固件问题。 IT部门推送了一些更新,第二天一切正常。以下是每个事件查看器安装的项目: