概述
在写zeromq 的程序的时候,我们需要设定的是ipc 的地址,这个时候需要设定ipc地址,是基于当前文件夹进行设定的,也就是说,不同文件夹下的ipc 即使写了相同的文件的名字。还是不能够通信。
如下图所示,我才用的是pub-xsub-xpub-sub 的模式,其中sub1 和 xpub 在相同的文件夹下,其能够通过正常ipc 进行通信,但是,sub2 不与xpub 在同一个文件夹下的情况的时候,其就不能够相互通信了
这种情况是你从来没有启动过任何文件的情况下,实际上zeromq会根据你生成main.ipc 文件所在位置来确定的
当我运行了我的proxy 的这个文件的时候,系统就帮我生成了一个main 这个就是我的进程文件所在的位置,这个时候,与此文件所在的相同的文件夹下的zeromq的套接字才能够与我通信
三个文件:
1 pub 文件
import socket
import time
if __name__=='__main__':
#需要绑定的地址
exp_id_server="tcp://115.156.162.76:6000"
# exp_id_server="ipc://sub_server_proxy"
#zeromq experiment part
import zmq
context = zmq.Context()
socketzmqpub = context.socket(zmq.PUB)
socketzmqpub.connect(exp_id_server)
while True:
v_data = 123
time.sleep(1)
print('v_data 是多少?',v_data)
#可以每次系统改变,都重启一次数据解析的脚本,如何异步不阻塞的对多个不同的客户端进行
socketzmqpub.send(b'expid'+struct.pack('!f',v_data))
2 xsub-xpub 文件
import zmq
def broker_proxy():
#创建本进程使用的上下文
context = zmq.Context()
#建立sub 套接字以供远端的多个不同子系统的pub 进行链接使用
url = "tcp://115.156.162.76:6000"
# url = "ipc://sub_server_proxy"
socketsub = context.socket(zmq.SUB)
socketsub.set_hwm(100000)
socketsub.bind(url)
#订阅内容设定为所有的套接字的所有的消息都要订阅
socketsub.setsockopt(zmq.SUBSCRIBE,''.encode('utf-8'))
#建立自身的分发系统,采用的是进程间的通信的机制,或者采用的是线程间的通信的机制
socketpub = context.socket(zmq.PUB)
socketpub.set_hwm(100000)
# urlzmq = "tcp://127.0.0.1:6005"
urlzmq = "ipc://main.ipc"
socketpub.bind(urlzmq)
import time
numpage=0
while True:
response = socketsub.recv()
# time.sleep(1)
# response=b'hello world'
numpage = numpage + 1
print(numpage)
socketpub.send(response)
'''
这个地方为什么要做一个中介
因为,
如果不中介的话,
1、我的subscribe 端 就要订阅所有的publisher 端
2、同时,同步的情况也是相对比较麻烦
如果有中介解决
1、可以解决同步的问题
2、其两端的部分,都可以各自变化,不会彼此受到影响
'''
if __name__=='__main__':
broker_proxy()
3 sub 文件
import zmq
context = zmq.Context()
url="ipc://main"
socketsub = context.socket(zmq.SUB)
socketsub.connect(url)
socketsub.setsockopt(zmq.SUBSCRIBE,b'')
while True:
response = socketsub.recv()
print(response)
print('we have get one in socket sub 2 ')
想要测试的同学,可以分别将这三个文件放在不同的文件夹下 看出所在文件夹下的影响
最后
以上就是迷你蜡烛为你收集整理的zmq 之 ipc 通信的全部内容,希望文章能够帮你解决zmq 之 ipc 通信所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复