python的zmq模块

1、zmq介绍:创建和销毁套接字:zmq.socket(), zmq.close()配置和读取套接字:zmq.setsockopt(), zmq.getsockopt()为套接字建立连接:zmq.bind(), zmq.connect()发送和接收消息: zmq.send(), zmq.recv()注:使用zmq.bind()连接的节点称之为服务端,它有着一个较为固定的网络地址;使用zmq.connect()连接的节点称为客户端,其地址不固定。2、zmq消息模式:主要有三种常用模式: req/rep(请求答复模式):主要用于远程调用及任务分配等。 pub/sub(订阅模式): 主要用于数据分发。 push/pull(管道模式): 主要用于多任务并行。3、zmq内置的有效绑定对:PUB and SUBREQ and REPREQ and XREPXREQ and REPXREQ and XREPXREQ and XREQXREP and XREPPUSH and PULLPAIR and PAIR4、具体消息模式举例(1)、req/rep(请求/答复模式):一对一模式,一问一答#server服务端import zmqcontext=zmq.Context()socket=context.socket(zmq.REP) #设置socket的类型,zmq.REP答复socket.bind(“tcp://*:15000”) #绑定服务端的IP和端口while True: #循环接收客户端发来的消息 message=socket.recv() #接收客户端发送来的消息,注:是byte类型 print(message) socket.send_string(“copy!”) #再发回客户端消息结果:客户单没请求一次就打印一次消息体b’request’b’request’b’request’b’request’#client客户端import zmq, syscontext = zmq.Context()socket=context.socket(zmq.REQ) #设置socket类型,请求端socket.connect(“tcp://localhost:15000”) #连接服务端的IP和端口while True: data=input(“input your request:”) if data == “q”: sys.exit() socket.send_string(data) #向服务端发送消息 message=socket.recv() #接收服务端返回的消息,注:是byte类型 print(message)”””结果:没输入请求一次,就得到服务端的一次返回input your data:123b’copy!’input your data:456b’copy!'”””(2)、pub/sub(订阅模式):一对多模式一个发布者,多个订阅者,订阅者可以通过设置过滤器过滤数据。#publisher发布者import zmqcontext=zmq.Context()socket=context.socket(zmq.PUB)socket.bind(“tcp://*:15000”)while True: data = input(“input your data:”) print(data) socket.send_string(data)”””结果:循环提示输入数据,当输入一次,就发送一次到订阅者input your data:123123input your data:456456input your data:789789input your data:”””#Subscriber订阅者import sysimport zmqcontext=zmq.Context()socket=context.socket(zmq.SUB)socket.connect(“tcp://localhost:15000″)socket.setsockopt_string(zmq.SUBSCRIBE,”)或者:socket.setsockopt_string(zmq.SUBSCRIBE,’123′) #表示只过滤出收到消息为’123’的消息或者:socket.subscribe(‘topic’) #订阅一个主题while True: message=socket.recv() print(message)”””结果:发布者每发布一次,都能订阅到b’123’b’456’b’789′”””(3)、push/pull(管道模式):管道是单向的,从PUSH端单向的向PULL端单向的推送数据流。由三部分组成,push进行数据推送,work进行数据缓存,pull进行数据竞争获取处理。区别于Publish-Subscribe存在一个数据缓存和处理负载。当连接被断开,数据不会丢失,重连后数据继续发送到对端。#推送端import zmqcontext=zmq.Context()socket=context.socket(zmq.PUSH) #设置socket类型PUSH推送socket.bind(“tcp://*:5557”) #绑定IP和端口while True: data=input(“input your data:”) socket.send_string(data)”””input your data:123input your data:456input your data:789″””#worker端import zmqcontext=zmq.Context()socket_receive=context.socket(zmq.PULL) #设置socket类型PULL拉取推送端的消息socket_receive.connect(“tcp://localhost:5557”) #连接推送端IP和端口socket_sender=context.socket(zmq.PUSH) #再设置一个socket类型PUSH推送socket_sender.connect(“tcp://localhost:5558”) #连接IP和端口向其推送消息while True: data=socket_receive.recv_string() #拉取接收消息 print(data) socket_sender.send_string(data) #再将消息推送出去”””123456789″””#拉取端import zmqcontext=zmq.Context()socket=context.socket(zmq.PULL) #设置socket类型PULL拉取消息socket.bind(“tcp://*:5558″) #绑定IP和端口去拉取消息while True: message=socket.recv_string() print(message)”””123456789″””

郑重声明:本文内容及图片均整理自互联网,不代表本站立场,版权归原作者所有,如有侵权请联系管理员(admin#wlmqw.com)删除。
(0)
用户投稿
上一篇 2022年6月16日
下一篇 2022年6月16日

相关推荐

  • 一代球王终将没落,C罗自愿降薪30%转会都无球队愿意接盘

    夏窗尾声 各球队都已开始收队进行新赛季的赛前热身 哈兰德转会曼城,姆巴佩留守大巴黎,卢卡库租借国米重回意甲,莱万远赴西甲巴萨,欧洲足坛迎来不小的转会换血。 对于曼联来说,在经历了一…

    2022年7月24日
  • 重磅!DIY的Prometheus主备方案,全网唯一 生产未上,测试先行

    写在开篇 关于prometheus的高可用方案,经过笔者不断的研究、对比、和搜索,发现不管是官方、还是各大搜索引擎搜索出来的方案,都不符合笔者的需求。因此,笔者自己设计了一套pro…

    2022年6月13日
  • 手撕SVM(公式推导+代码实现)(三)

    前言 前面我们进行了很多的理论性研究,下面我们开始用代码进行实现。 编程求解线性SVM 可视化数据集 import matplotlib.pyplot as pltimport n…

    2022年6月15日
  • 别着急为阿里“造”的车买单

    出品 | 虎嗅汽车组 作者 | 王笑渔 编辑 | 周到 头图 | 视觉中国 2016年云栖大会,马云与上汽集团董事长陈虹坐上了阿里与上汽合作打造的荣威RX5。喜欢开车的阿里巴巴董事…

    2022年6月18日
  • 学习通:还未发现明确的用户信息泄露证据,已报案

    6月21日,学习通发布关于“疑似学习通用户数据泄露”传闻的声明:经十余个小时的技术排查,未发现明确的用户信息泄露证据。已向公安机关报案,公安机关已介入调查。

    2022年6月23日
  • 昨天,马思纯赢了,北大韦神输了

    1 我是脆皮。 这是一个娱乐至死的年代。 但我没想到,“马思纯逆行、车窗乱丢垃圾”的消息,竟然在热搜上挂了整整一天。 近日,有网友爆料: 8月9日晚高峰时段,一辆白色奔驰,在北京的…

    2022年8月18日
  • 欧空局已为NASA阿尔忒弥斯1号发射做好准备 欧洲人想2030年前登月

    提到马上就要发射的阿尔忒弥斯1号任务,欧洲空间局(欧空局,ESA)的人员也是异常兴奋,这代表着欧洲人距离月球也更近了一步。8月23日,在阿尔忒弥斯1号任务吹风会上,欧空局总干事约瑟…

    2022年8月26日
  • 关于河南经济发展数据的整理及思考

    上次简单罗列了一下全国范围的人口、国考及高考数量的变化情况,全国范围的数据具有广泛性。这次对河南地区的经济数据进行了整理,主要是人口、建筑竣工面积、GDP(人均GDP)及城镇化率的…

    2022年8月14日
  • “祝融号”火星车进入冬季休眠模式 预计12月前后恢复正常工作

    中国青年报客户端北京5月20日电(中青报·中青网记者 邱晨辉)国家航天局探月与航天工程中心今天发布消息称:为应对沙尘天气导致的太阳翼发电能力降低及冬季极低的环境温度,按照设计方案和…

    2022年8月14日
  • MYSQL术语介绍:change buffer

    一种特殊的数据结构,用于记录二级索引中页面的更改 。这些值可能来自 DML语句。涉及更改缓冲的一组特性统称为更改缓冲,包括 插入缓冲、更新缓冲和删除缓冲。 仅当二级索引中的相关页面…

    2022年7月18日

联系我们

联系邮箱:admin#wlmqw.com
工作时间:周一至周五,10:30-18:30,节假日休息