加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

python – ZeroMQ Poller vs Tornados EventLoop

发布时间:2020-12-16 21:59:17 所属栏目:Python 来源:网络整理
导读:设计明智和性能明智哪种方法建议用于处理多个Zeromq插座,为什么? ZeroMQ使用的Tornado的IOLoop是否真的比使用while循环中的Poller处理多个套接字的CPU少? 最佳答案 如果你将自己的观察/分析添加到你的问题中会很好. 我认为性能没有任何差异,但设计上存在差

设计明智和性能明智哪种方法建议用于处理多个Zeromq插座,为什么?

ZeroMQ使用的Tornado的IOLoop是否真的比使用while循环中的Poller处理多个套接字的CPU少?

最佳答案
如果你将自己的观察/分析添加到你的问题中会很好.

我认为性能没有任何差异,但设计上存在差异.

如果是poller

您注册要轮询的套接字,然后使用if块来识别和使用每个套接字.

while should_continue:
        socks = dict(poller.poll())
        if socket_pull in socks and socks[socket_pull] == zmq.POLLIN:
            Work_on_socket_pull ....

        if socket_sub in socks and socks[socket_sub] == zmq.POLLIN:
             Work_on_socket_sub ....

如果是eventloop
但是,当您处理多个套接字时,使用事件循环非常优雅,因为您注册了回调.

stream_pull = zmqstream.ZMQStream(socket_pull)
stream_pull.on_recv(getcommand)

stream_sub = zmqstream.ZMQStream(socket_sub)
stream_sub.on_recv(process_message)

从第二个示例中可以看出,if块被删除了.您可以在其他地方编写套接字消息传递操作,并在套接字准备就绪时注册回调方法.在这种情况下on_recv()

我希望这能澄清你的问题.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读