【관련 학습 권장 사항: python tutorial】
Pyzmq 소개
ZMQ(이하 ZeroMQ는 ZMQ로 약칭함)는 간단하고 사용하기 쉬운 전송 계층입니다. , 프레임워크 라이브러리와 같은 소켓을 사용하면 소켓 프로그래밍을 더 간단하고 간결하며 성능이 향상됩니다.
은 여러 스레드, 코어 및 호스트 상자에 걸쳐 탄력적으로 확장되는 메시지 처리 대기열 라이브러리입니다. ZMQ의 명시된 목표는 "표준 네트워크 프로토콜 스택의 일부가 되고 나중에 Linux 커널에 들어가는 것"입니다.
ZMQ를 사용하면 고성능 네트워크 애플리케이션을 매우 쉽고 재미있게 작성할 수 있습니다.
ZeroMQ는 소켓 캡슐화가 아니며 기존 네트워크 프로토콜을 구현하는 데 사용할 수 없습니다.
하위 수준의 지점 간 통신 모드와는 다른 자체 모드가 있습니다.
tcp 프로토콜보다 더 높은 수준의 프로토콜을 가지고 있습니다. (물론 ZeroMQ는 반드시 TCP 프로토콜을 기반으로 하는 것은 아니며 프로세스 간 및 프로세스 내 통신에도 사용할 수 있습니다.)
zeromq
并不是类似rabbitmq
메시지 큐, 실제로는 메시지 큐 구성 요소이자 라이브러리일 뿐입니다. ㅋㅋㅋ
zeromq.github.io / pyzmq/
zguide.zeromq.org/py:all | |
---|---|
pip install pyzmq | |
1의 여러 모드. 응답 모드(요청-응답) (담당자 및 요청) | |
2 구독 게시 모드(pub 및 sub) |
3. 푸시 풀 모드
메시지는 단방향이며 돌아올 수 없습니다. 푸시된 메시지의 경우 하나의 풀 엔드만 메시지를 수신합니다.다음 프록시 모드와 라우팅 모드는 모두 세 가지 기본 모드의 확장 또는 변형입니다.
1. 요청-응답 모드(요청 응답 모델):
클라이언트가 요청한 후 서버가 응답해야 합니다. 클라이언트는 요청을 시작하고 서버가 요청에 응답할 때까지 기다립니다. 클라이언트 측에서는 송신 및 수신 쌍이 있어야 합니다.반대로 서버 측에서는 송신 및 수신 쌍이 있어야 합니다. 서버와 클라이언트 모두 1:N 모델이 가능합니다. 일반적으로 1은 서버로 간주되고 N은 클라이언트로 간주됩니다.
ZMQ는 라우팅 기능을 매우 잘 지원할 수 있으며(라우팅 기능을 구현하는 구성 요소를 장치라고 함) 1:N에서 N:M으로 확장할 수 있습니다(몇 개의 라우팅 노드만 추가하면 됩니다). 이 모델에서는 하위 레벨 엔드포인트 주소가 상위 레이어로부터 숨겨집니다. 응답 주소는 모든 요청에 암시되어 있으며 애플리케이션은 이에 대해 신경 쓰지 않습니다.
Server:
sever.py import zmq import sys
context = zmq.Context()
socket = context.socket(zmq.REP)
socket.bind("tcp://*:5555")
while True:
try:
print("wait for client ...")
message = socket.recv()
print("message from client:", message.decode('utf-8'))
socket.send(message)
except Exception as e:
print('异常:',e)
sys.exit()
Client:
#client.py
import zmq import sys context = zmq.Context() print("Connecting to server...") socket = context.socket(zmq.REQ) socket.connect("tcp://localhost:5555") while True: input1 = input("请输入内容:").strip() if input1 == 'b': sys.exit() socket.send(input1.encode('utf-8')) message = socket.recv() print("Received reply: ", message.decode('utf-8'))
2.Publish -구독 모드(게시-구독 모델):
모든 클라이언트에게 방송되며 대기열 캐시가 없으며 연결이 끊긴 데이터는 영원히 손실됩니다. 클라이언트는 데이터 필터링을 수행할 수 있습니다.
Serverimport zmq import time import sys context = zmq.Context() socket = context.socket(zmq.PUB) socket.bind("tcp://*:5555") while True: msg = input("请输入要发布的信息:").strip() if msg == 'b': sys.exit() socket.send(msg.encode('utf-8')) time.sleep(1)Client1
client1.py import zmq
context = zmq.Context()
socket = context.socket(zmq.SUB)
socket.connect("tcp://localhost:5555")
socket.setsockopt(zmq.SUBSCRIBE,''.encode('utf-8')) # 接收所有消息 while True:
response = socket.recv().decode('utf-8');
print("response: %s" % response)
Client2client2.py
import zmq context = zmq.Context() socket = context.socket(zmq.SUB) socket.connect("tcp://localhost:5555") socket.setsockopt(zmq.SUBSCRIBE,'123'.encode('utf-8')) # 消息过滤 只接受123开头的信息 while True: response = socket.recv().decode('utf-8'); print("response: %s" % response)
3. 병렬 파이프라인 모드(파이프라인 모델):
세 부분으로 구성되어 있습니다 : 데이터 푸시를 위한 푸시, 데이터 캐싱을 위한 작업, 데이터 경쟁 획득 처리를 위한 풀입니다. Publish-Subscribe와는 다르게 데이터 캐시와 처리 부하가 있습니다. 연결이 끊어져도 데이터는 손실되지 않으며, 다시 연결된 후에도 데이터는 계속해서 상대방에게 전송됩니다.
server.py
import zmq import time context = zmq.Context() socket = context.socket(zmq.PUSH) socket.bind("tcp://*:5557") while True: msg = input("请输入要发布的信息:").strip() socket.send(msg.encode('utf-8')) print("已发送") time.sleep(1)
worker.py
import zmq context = zmq.Context() receive = context.socket(zmq.PULL) receive.connect('tcp://127.0.0.1:5557') sender = context.socket(zmq.PUSH) sender.connect('tcp://127.0.0.1:5558') while True: data = receive.recv() print("正在转发...") sender.send(data)
client.py
import zmq context = zmq.Context() socket = context.socket(zmq.PULL) socket.bind("tcp://*:5558") while True: response = socket.recv().decode('utf-8') print("response: %s" % response)
위 내용은 Pyzmq 소개의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

Python은 데이터 과학, 웹 개발 및 자동화 작업에 적합한 반면 C는 시스템 프로그래밍, 게임 개발 및 임베디드 시스템에 적합합니다. Python은 단순성과 강력한 생태계로 유명하며 C는 고성능 및 기본 제어 기능으로 유명합니다.

2 시간 이내에 Python의 기본 프로그래밍 개념과 기술을 배울 수 있습니다. 1. 변수 및 데이터 유형을 배우기, 2. 마스터 제어 흐름 (조건부 명세서 및 루프), 3. 기능의 정의 및 사용을 이해하십시오. 4. 간단한 예제 및 코드 스 니펫을 통해 Python 프로그래밍을 신속하게 시작하십시오.

Python은 웹 개발, 데이터 과학, 기계 학습, 자동화 및 스크립팅 분야에서 널리 사용됩니다. 1) 웹 개발에서 Django 및 Flask 프레임 워크는 개발 프로세스를 단순화합니다. 2) 데이터 과학 및 기계 학습 분야에서 Numpy, Pandas, Scikit-Learn 및 Tensorflow 라이브러리는 강력한 지원을 제공합니다. 3) 자동화 및 스크립팅 측면에서 Python은 자동화 된 테스트 및 시스템 관리와 같은 작업에 적합합니다.

2 시간 이내에 파이썬의 기본 사항을 배울 수 있습니다. 1. 변수 및 데이터 유형을 배우십시오. 이를 통해 간단한 파이썬 프로그램 작성을 시작하는 데 도움이됩니다.

10 시간 이내에 컴퓨터 초보자 프로그래밍 기본 사항을 가르치는 방법은 무엇입니까? 컴퓨터 초보자에게 프로그래밍 지식을 가르치는 데 10 시간 밖에 걸리지 않는다면 무엇을 가르치기로 선택 하시겠습니까?

Fiddlerevery Where를 사용할 때 Man-in-the-Middle Reading에 Fiddlereverywhere를 사용할 때 감지되는 방법 ...

Python 3.6에 피클 파일로드 3.6 환경 보고서 오류 : modulenotfounderror : nomodulename ...

경치 좋은 스팟 댓글 분석에서 Jieba Word 세분화 문제를 해결하는 방법은 무엇입니까? 경치가 좋은 스팟 댓글 및 분석을 수행 할 때 종종 Jieba Word 세분화 도구를 사용하여 텍스트를 처리합니다 ...


핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

Atom Editor Mac 버전 다운로드
가장 인기 있는 오픈 소스 편집기

ZendStudio 13.5.1 맥
강력한 PHP 통합 개발 환경

DVWA
DVWA(Damn Vulnerable Web App)는 매우 취약한 PHP/MySQL 웹 애플리케이션입니다. 주요 목표는 보안 전문가가 법적 환경에서 자신의 기술과 도구를 테스트하고, 웹 개발자가 웹 응용 프로그램 보안 프로세스를 더 잘 이해할 수 있도록 돕고, 교사/학생이 교실 환경 웹 응용 프로그램에서 가르치고 배울 수 있도록 돕는 것입니다. 보안. DVWA의 목표는 다양한 난이도의 간단하고 간단한 인터페이스를 통해 가장 일반적인 웹 취약점 중 일부를 연습하는 것입니다. 이 소프트웨어는

WebStorm Mac 버전
유용한 JavaScript 개발 도구

안전한 시험 브라우저
안전한 시험 브라우저는 온라인 시험을 안전하게 치르기 위한 보안 브라우저 환경입니다. 이 소프트웨어는 모든 컴퓨터를 안전한 워크스테이션으로 바꿔줍니다. 이는 모든 유틸리티에 대한 액세스를 제어하고 학생들이 승인되지 않은 리소스를 사용하는 것을 방지합니다.
