Python网络编程:ZeroMQ

大家好,我是老胡。
最近和朋友在做一个事情,我是一名统计专业的学生,​​但是我的编程能力实在是太差了,所以有点落后。
因此,基础知识的补充是很有必要的。
本系列将更新更多文章。
有兴趣的同学可以一起学习、交流。
ZeroMQ概述ZeroMQ(ØMQ)是一个基于消息队列的多线程网络库,它封装了网络通信、消息队列、线程调度等功能,并向上层提供了简单的API。
通过加载库文件和调用API函数,应用程序可以实现高性能的网络通信。
Request-Reply(请求响应模式)Request-Reply模式是一种简单的通信模式,客户端向服务器发送请求,服务器处理完请求后返回响应。
以下是Python实现的示例。
通过pip安装ZeroMQ:检查安装是否成功:运行示例:再运行一些client.py并观察状态。
发布/订阅(订阅-发布模式)在发布/订阅模式下,发布者向订阅者发送信息,订阅者选择接收特定类型的信息。
以下是使用ZeroMQ的Python实现示例。
发布者:类似于天气更新服务器,它向订阅者发送天气更新,包括邮政编码、温度、湿度和其他信息。
订阅者:监听发布者更新的数据流,以接收仅与特定邮政编码相关的天气信息。
过滤,默认获取10条数据。
Push/Pull(管道模式)Pus​​h/Pull模式是一种数据处理的通信模式,其中通风机负责将任务分发给工作节点,工作节点接收任务并将其结果聚合到接收器中。
以下是使用ZeroMQ测试负载平衡的Python实现示例。
打开四个终端,分别运行以下脚本。
总结ZeroMQ的消息传递模型可以根据需要组合使用,包括代理模式和路由模式等扩展或突变。
请参阅官方文档了解更多详细信息。
Github:github.com/zeromq/pyzmqDocs:zeromq.github.io/pyzmqGuide:zguide.zeromq.org/py:al...pypi:pypi.org/project/pyzmq/

python多进程和多线程的区别

进程是程序(软件、应用程序)的可执行实例。
每个正在运行的程序可以同时创建多个进程,但至少必须有一个进程。
每个进程提供执行程序所需的所有资源。
它具有虚拟地址空间、可执行代码、操作系统接口、安全上下文(记录启动进程的用户和权限等)以及唯一ID。
环境变量、优先级、最小和最大工作空间(内存空间)。
进程可以包含线程,并且每个进程必须至少有一个线程。
每个进程启动时,首先创建一个线程,即主线程,然后主线程创建其他子线程。

线程,有时也称为轻量级进程(LightweightProcess,LWP),是程序执行流程的最小单位。
标准线程包括线程ID、当前指令指针(PC)、寄存器组和堆栈。
另外,线程是进程中的一个实体,是系统独立调度和分派的基本单位。
线程本身并不独立拥有系统资源,但它可以与其他线程共享进程拥有的所有资源。
属于同一个进程。
每个应用程序至少有一个进程和一个线程。
在一个程序中同时运行多个线程来完成分成不同部分的不同任务称为多线程。

例如,一家公司想要生产一种产品,应该在其生产设施中建立许多工厂,每个工厂有许多生产线。
所有工厂合作生产整个产品。
单个工厂内的装配线负责生产其所属工厂的产品零部件。
每个工厂都有自己的材料库,工厂内的生产线共享这些材料。
一个公司要实现产出,必须至少拥有一个工厂和一条生产线。
切换到计算机概念上,公司就是应用程序,工厂就是应用程序的进程,生产线就是某个进程的线程。

线程的特点:

线程是一个执行上下文,是CPU执行所需的一系列指令。
假设您正在读一本书,尚未读完,想休息一下,但回来后又想继续读下去。
一种方法是记下三个值:页号、行号和字号。
这些值就是执行上下文。
如果你的室友在你休息的时候正在读这本书,请使用相同的方法。
你和她只需要写下这三个数字,这样你们就可以轮流读书了。

主题的工作原理类似。
CPU会给你一种它可以同时执行多个操作的错觉。
事实上,每次操作只消耗很少的时间。
-称为多线程和并发处理。
CPU可以做到这一点,因为它为每个任务都有一个执行上下文,就像你可以做的那样与您的朋友分享同一本书。

进程和线程的区别:

同一个进程内的线程共享相同的内存空间,但进程之间的内存空间是独立建立的。

同一进程内所有线程的数据是共享的,但进程之间的数据是独立的。

对主线程的修改可能会影响其他线程的行为,但对父进程的修改(删除除外)不会影响其他子进程。

线程是上下文执行的指令,而进程是与操作关联的资源集群。

同一进程内的线程可以直接通信,但进程之间的通信需要借助中间代理。

创建新线程很容易,但创建新进程需要原始进程的副本。

线程可以操作同一进程的其他线程,但进程只能操作其子进程。

线程启动速度快,进程启动速度慢(但两者的运行速度没有可比性)。

随着现代CPU已经进入多核时代,主频比以前有了很大的提升,多线程、多进程编程已经成为主流。
Python完全支持多线程和多进程编程,也支持协程。