关于ZeroMQ 三种模式python3实现方式

 更新时间:2019年12月23日 14:45:47   作者:gmHappy  
今天小编就为大家分享一篇关于ZeroMQ 三种模式python3实现方式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

ZeroMQ是一个消息队列网络库,实现网络常用技术封装。在C/S中实现了三种模式,这段时间用python简单实现了一下,感觉python虽然灵活。但是数据处理不如C++自由灵活。

Request-Reply模式:

客户端在请求后,服务端必须回响应

server:

# -*-coding:utf-8 -*-

import zmq 

context = zmq.Context()
socket = context.socket(zmq.REP)
socket.bind("tcp://*:5555")

while True:
 message = socket.recv()
 print (message)
 socket.send("server response!".encode('utf-8'))

clinet:

# -*-coding:utf-8 -*-

import zmq
import sys

context = zmq.Context()
socket = context.socket(zmq.REQ)
socket.connect("tcp://localhost:5555")

while(True):
 data = input("input your data:")
 if data == 'q':
  sys.exit()

 print(data)
 socket.send(data.encode('utf-8'))

 response = socket.recv();
 print (response) 

Publish-Subscribe模式:

广播所有client,没有队列缓存,断开连接数据将永远丢失。client可以进行数据过滤。

server:

# -*-coding:utf-8 -*-

import zmq 
context = zmq.Context() 
socket = context.socket(zmq.PUB) 
socket.bind("tcp://127.0.0.1:5000") 
while True: 
 data = input('input your data:')
 socket.send(data.encode('utf-8'))

clinet:

# -*-coding:utf-8 -*-

import time
import zmq 
context = zmq.Context() 
socket = context.socket(zmq.SUB) 
socket.connect("tcp://127.0.0.1:5000") 
socket.setsockopt(zmq.SUBSCRIBE, ''.encode('utf-8')) 
while True: 
 print(socket.recv()) 

Parallel Pipeline模式:

由三部分组成,push进行数据推送,work进行数据缓存,pull进行数据竞争获取处理。区别于Publish-Subscribe存在一个数据缓存和处理负载。

当连接被断开,数据不会丢失,重连后数据继续发送到对端

server:

# -*-coding:utf-8 -*-

import zmq

context = zmq.Context()

recive = context.socket(zmq.PULL)
recive.connect('tcp://127.0.0.1:5558')


while True:
 data = recive.recv()
 print(data)

work:

# -*-coding:utf-8 -*-

import zmq

context = zmq.Context()

recive = context.socket(zmq.PULL)
recive.connect('tcp://127.0.0.1:5557')

sender = context.socket(zmq.PUSH)
sender.connect('tcp://127.0.0.1:5558')

while True:
 data = recive.recv()
 print(data)
 sender.send(data)

clinet:

# -*-coding:utf-8 -*-
import zmq
import time

context = zmq.Context()
socket = context.socket(zmq.PUSH)

socket.bind('tcp://*:5557')

while True:
 data = input('input your data:')
 print(data)
 socket.send(data.encode('utf-8'))

以上这篇关于ZeroMQ 三种模式python3实现方式就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • django实现支付宝支付实例讲解

    django实现支付宝支付实例讲解

    在本篇文章里小编给大家整理的是一篇关于django支付宝支付的代码实例内容,需要的朋友们可以学习下。
    2019-10-10
  • 使用python实现男神女神颜值打分系统(推荐)

    使用python实现男神女神颜值打分系统(推荐)

    这篇文章主要介绍了用python做一个男神女神颜值打分系统(程序分析见注释),需要的朋友可以参考下
    2019-10-10
  • 基于python爬取链家二手房信息代码示例

    基于python爬取链家二手房信息代码示例

    这篇文章主要介绍了基于python爬取链家二手房信息代码示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-10-10
  • pytorch 限制GPU使用效率详解(计算效率)

    pytorch 限制GPU使用效率详解(计算效率)

    这篇文章主要介绍了pytorch 限制GPU使用效率详解(计算效率),具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-06-06
  • Python实现的调用C语言函数功能简单实例

    Python实现的调用C语言函数功能简单实例

    这篇文章主要介绍了Python实现的调用C语言函数功能,结合简单实例形式分析了Python使用ctypes模块调用C语言函数的具体步骤与相关操作技巧,需要的朋友可以参考下
    2019-03-03
  • Django跨域请求问题的解决方法示例

    Django跨域请求问题的解决方法示例

    这篇文章主要给大家介绍了关于Django跨域请求问题解决的相关资料,文中介绍的实现方法包括:使用django-cors-headers全局控制、使用JsonP,只能用于Get方法以及在views.py里设置响应头,只能控制单个接口,需要的朋友可以参考下
    2018-06-06
  • 使用Python3中的gettext模块翻译Python源码以支持多语言

    使用Python3中的gettext模块翻译Python源码以支持多语言

    这篇文章主要介绍了使用Python3中的gettext模块翻译Python源码以支持多语言,其中翻译Python源码只是作为示例以展示gettext的功能和用法,需要的朋友可以参考下
    2015-03-03
  • python多进程实现进程间通信实例

    python多进程实现进程间通信实例

    这篇文章主要介绍了python多进程实现进程间通信实例,具有一定参考价值,需要的朋友可以了解下。
    2017-11-11
  • Python模块导入问题终极解决方法指南

    Python模块导入问题终极解决方法指南

    这篇文章主要介绍了Python模块导入机制,包括sys.path的作用、包与模块的区别,以及常见导入问题如ModuleNotFoundError和相对导入问题的解决方法,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2025-02-02
  • 一文带你深入了解Python中的多进程编程

    一文带你深入了解Python中的多进程编程

    在 Python 中,多进程编程是一种提高程序运行效率的有效手段,本文将详细讲解 Python 多进程编程的基本概念,使用方法及注意事项,希望对大家有所帮助
    2024-12-12

最新评论