Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/346.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
ZMQ上下文套接字在新计算机上的创建速度要慢得多 这最初是在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.")_Python_C++_Sockets_Zeromq_Pyzmq - Fatal编程技术网

ZMQ上下文套接字在新计算机上的创建速度要慢得多 这最初是在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.")

ZMQ上下文套接字在新计算机上的创建速度要慢得多 这最初是在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."),python,c++,sockets,zeromq,pyzmq,Python,C++,Sockets,Zeromq,Pyzmq,在其他电脑上,在我的旧笔记本电脑上,这只需几分之一秒。然而,在我的新笔记本电脑(beefy Dell Precision 7730)上,这大约需要44秒。我在创建zmq.SUB(订户)套接字时得到了类似的结果 如果我跳入socket()调用,则始终使用的两条语句如下所示: zmq/sugar/context.py class Context def instance(cls, io_threads=1): ... cls._instance

在其他电脑上,在我的旧笔记本电脑上,这只需几分之一秒。然而,在我的新笔记本电脑(beefy 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)
         ...
我感到困惑和困惑。笔记本电脑上的其他一切似乎都很好。也许我已经用一些稍微不同的方式安装了我的依赖模块?以前安装的zmq模块与pyzmq是否会导致问题?也许是我们it部门的笔记本电脑设置中的某些东西?我尝试过以管理员身份运行,从PyCharm内部运行,从命令行运行,并在运行时拔下网络电缆

我对Python和ZMQ比较陌生,但是我们已经在这个项目上开发了几个月,没有任何性能问题。在生产代码中,我们有一个MessageBroker类,它包含大多数发布/订阅体系结构。上面的单元测试是通过简单地从MessageBroker.Publisher构造函数(创建套接字)中取出第一行重要代码创建的。尽管这台计算机上的套接字创建速度很慢,但在创建套接字之后,我们的应用程序仍然能够正常运行。启动应用程序只需7分钟


我怀疑Ed的调试定律:“行为越古怪,错误就越愚蠢。”

这显然是Windows 10或笔记本电脑固件的问题。IT部门推动了一些更新,第二天一切正常。以下是根据事件查看器安装的项目:

  • 已安装KB4456655:Windows 10的维护堆栈更新,版本1803:2018年9月11日(稳定性改进)
  • 已安装KB4462930:Adobe Flash Player的更新
  • 已安装KB4100347:英特尔微码更新
  • 已安装KB4485449:Windows10V1803的服务堆栈更新-2月12日
  • 已安装KB4487017:(与KB4485449描述相同)
  • 已安装KB4487038:Adobe Flash Player的安全更新

    • 这显然是Windows 10或笔记本电脑固件问题。IT部门推动了一些更新,第二天一切正常。以下是根据事件查看器安装的项目:

      • 已安装KB4456655:Windows 10的维护堆栈更新,版本1803:2018年9月11日(稳定性改进)
      • 已安装KB4462930:Adobe Flash Player的更新
      • 已安装KB4100347:英特尔微码更新
      • 已安装KB4485449:Windows10V1803的服务堆栈更新-2月12日
      • 已安装KB4487017:(与KB4485449描述相同)
      • 已安装KB4487038:Adobe Flash Player的安全更新

      我不知道这是否能帮到你,但通常网络相关内容的很长延迟来自于库/网络堆栈内部的一些非必要网络服务超时失败(并被重试多次),原因是——比如,一些内部DNS查询应该是瞬时的,但挂起。并不是说这就是事实,但这是我调查的主要方向。如果您在Linux上,请尝试在
      strace
      下运行它;在任何平台上,在本机代码调试器下运行您的程序,在等待期间停止它,然后查看它在做什么。感谢Matteo的建议。PyCharm和pdb只允许我在zmq/sugar/context中进行一定深度的调试。我正在研究让我能够进行更深入调试的方法。事实上,如果您在Linux上,您应该使用gdb并查看较低级别上的情况,或者其他一些本机调试器(macOS IIRC上的lldb和Windows上的windbg/visual studio/cdb)。这是一个Windows框。我尝试在VisualStudio中创建一个C++项目,它使用从NuGET中提取的ZMQ库。它也表现出同样的延迟。我没有这个特定库的ZMQ源文件,但是我可以看到反汇编。暂停执行调用堆栈的大部分时间是:CealthIoSux-> RePaultT> MyBox xT- > StaveRealth-t> StaveReavyT.MaxuFFDON(UTIN 64,UIT64),它现在既用于C++又用于Python。我将尝试从IT人员那里了解他们是否对我的机器进行了任何更改,我将发布解决方案。我不知道这是否能帮助您,但网络相关内容的延迟通常是由于库/网络堆栈内部的一些非必要网络服务超时失败(并被重试多次)造成的出于某种原因-例如,某些内部DNS查询应该是即时的,但挂起。并不是说这就是事实,但这是我调查的主要方向。如果您在Linux上,请尝试在
      strace
      下运行它;在任何平台上,在本机代码调试器下运行您的程序,在等待期间停止它,然后查看它在做什么。感谢Matteo的建议。PyCharm和pdb只允许我在zmq/sugar/context中进行一定深度的调试。我正在研究让我能够进行更深入调试的方法。事实上,如果您在Linux上,您应该使用gdb并查看较低级别上的情况,或者其他一些本机调试器(macOS IIRC上的lldb和Windows上的windbg/visual studio/cdb)。这是一个Windows框。我尝试在VisualStudio中创建一个C++项目,它使用从NuGET中提取的ZMQ库。它也表现出同样的延迟。我没有这个特定库的ZMQ源文件,但是我可以看到反汇编。暂停执行调用堆栈的大部分时间是:CealthIoSux-> RePaultT> MyBox xT- > StaveRealth-t> StaveReavyT.MaxuFFDON(UTIN 64,UTIN 64)。它现在既用于C++,又用于P。