【python3】多进程Pipe实现数据流模型

当涉及到数据流模型时,常见的方法是使用管道(Pipe)来实现进程间的通信。在数据流模型中,计算过程表示为数据流图,数据从一个节点流向另一个节点,并在节点之间进行转换和处理。

以下是一个稍微复杂一些的数据流模型示例代码:

from multiprocessing import Process, Pipedef producer(conn):for i in range(10):conn.send(i)conn.close()def transformer(conn_in, conn_out):while True:data = conn_in.recv()transformed_data = data * 2conn_out.send(transformed_data)def consumer(conn):while True:data = conn.recv()print("Received:", data)if __name__ == '__main__':producer_conn, transformer_conn = Pipe()transformer_conn2, consumer_conn = Pipe()p1 = Process(target=producer, args=(producer_conn,))p2 = Process(target=transformer, args=(transformer_conn, transformer_conn2))p3 = Process(target=consumer, args=(consumer_conn,))p1.start()p2.start()p3.start()p1.join()p2.join()p3.join()

在这个示例中,我们定义了三个函数:producertransformerconsumerproducer 函数用于生成数据并将其发送到 transformer 进程;transformer 进程接收来自 producer 的数据,进行转换,并将转换后的数据发送给 consumer 进程;consumer 进程接收来自 transformer 的数据并进行处理。

通过使用 multiprocessing 库中的 Pipe 类,我们创建了多个管道来实现进程间的通信。每个管道都有一个发送端和一个接收端,它们可以在不同的进程中使用。

在主程序中,我们创建了三个进程 p1p2p3,分别对应生产者、转换器和消费者。这些进程通过管道进行通信,并使用 start 方法启动它们。最后,通过 join 方法等待所有进程执行完成。

当程序运行时,生产者进程将生成从 0 到 9 的整数,并将它们发送到转换器进程。转换器进程将接收这些数据并将其乘以 2,然后将转换后的数据发送给消费者进程。消费者进程将接收并打印出接收到的数据。


单进程版本

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/733144.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

opencv编程

opencv编程 引言: ​ 本实验旨在介绍使用OpenCV进行图像处理和视频处理的基本操作。OpenCV(Open Source Computer Vision Library)是一个开源计算机视觉库,提供了丰富的图像和视频处理功能,既可以进行图像的读取、显示…

187基于matlab的弹道目标跟踪滤波方法

基于matlab的弹道目标跟踪滤波方法,扩展卡尔曼滤波(extended Kalman filter, EKF)、转换测量卡尔曼滤波(conversion measurement Kalman filter, CMKF)跟踪滤波,得到距离、方位角、俯仰角误差结果。程序已调…

llama2c(3)之tokenizer和encode

2、tokenizer和编码 2.1 tokenizer tokenizer的model不同于Transformer的model,Transformer的model是一些权重参数,tokenizer的model是一些分词,将一个句子分成分词的中介(模型)。,具体就是tokenizer.py文…

c 不同类型指针的转换

int 指针与unsigned char类型指针互转 #include <stdio.h> #include <stdlib.h>int main(void){int a(0x1<<24)|(0x2<<16)|(0x3<<8)|0x4; //0x1020304printf("16进制:%x\n",a);u_int8_t *p(u_int8_t *)&a; //int指针转为unsig…

人工智能|机器学习——DBSCAN聚类算法(密度聚类)

1.算法简介 DBSCAN(Density-Based Spatial Clustering of Applications with Noise)是一种基于密度的聚类算法&#xff0c;簇集的划定完全由样本的聚集程度决定。聚集程度不足以构成簇落的那些样本视为噪声点&#xff0c;因此DBSCAN聚类的方式也可以用于异常点的检测。 2.算法原…

Spring AOP基于注解方式实现

1. 场景介绍 目前假设我们有一个计算器类&#xff0c;并要为其中的方法添加日志功能。 计算器类如代码所示&#xff1a; public interface Calculator {int add(int i, int j);int sub(int i, int j);int mul(int i, int j);int div(int i, int j);}public class Calculator…

《汇编语言》- 读书笔记 - 第17章-实验17 编写包含多个功能子程序的中断例程

《汇编语言》- 读书笔记 - 第17章-实验17 编写包含多个功能子程序的中断例程 逻辑扇区根据逻辑扇区号算出物理编号中断例程&#xff1a;通过逻辑扇区号对软盘进行读写 代码安装 int 7ch 测试程序效果 实现通过逻辑扇区号对软盘进行读写 逻辑扇区 计算公式: 逻辑扇区号 (面号*8…

从零开始学HCIA之IPv6基础06

1、OSPFv3是IPv6路由基础&#xff0c;OSPFv3是运行于IPv6的OSPF路由协议&#xff0c;是一个独立的路由协议。 2、OSPFv3报文类型和作用 &#xff08;1&#xff09;Hello报文&#xff0c;周期性发送&#xff0c;用来发现和维持OSPFv3邻居关系。 &#xff08;2&#xff09;DBD…

CSS基础知识

font-family: "Trebuchet MS", Verdana, sans-serif; 字体栈&#xff0c;浏览器会一个一个试过去看下哪个可以用 font-size16px; font-size1em; font-size100%;//相对于16px 字体大小&#xff0c;需要进行单位换算16px1em font-weightnormal;//400font-weight属性…

docker搭建zero-ui

确保你已经安装了Docker和Docker Compose。如果没有&#xff0c;请参照官方文档安装&#xff1a;Docker 和 Docker Compose。 使用 Docker CLI 获取 Zero-UI 镜像: 首先&#xff0c;你需要从Docker Hub获取Zero-UI的Docker镜像。你可以使用 docker pull 命令来下载它。 docker…

YoloV5改进策略:Block改进|自研Block,涨点超猛|代码详解|附结构图

涨点效果 参考模型 参考的Block,如下图: 我对Block做了修改,修改后的结构图如下: 代码详解 from timm.models.layers import DropPathfrom torch import Tensor def channel_shuffle(x: Tensor, groups:

用Java Socket手撸了一个HTTP服务器

作为一个 Java 后端&#xff0c;提供 HTTP 服务可以说是基本技能之一了&#xff0c;但是你真的了解 HTTP 协议么&#xff1f;你知道知道如何手撸一个 HTTP 服务器么&#xff1f;Tomcat 的底层是怎么支持 HTTP 服务的呢&#xff1f;大名鼎鼎的 Servlet 又是什么东西呢&#xff0…

可观测性是什么?新手入门指南!

如果您之前对可观测性重要性&#xff0c;益处&#xff0c;以及组成不甚了解&#xff0c;本文是一个合适的指南手册。 什么是可观测性&#xff1f; 可观测性被定义为根据系统产生的输出数据&#xff08;如日志&#xff0c;指标和链路追踪&#xff09;来衡量当前系统运行状态的…

Apache的安装与目录结构详细解说

1. Apache安装步骤 Apache是一款开源的Web服务器软件&#xff0c;常用于搭建网站和服务。以下是Apache的安装步骤&#xff1a; 在官方网站&#xff08;https://httpd.apache.org/&#xff09;下载最新版本的Apache软件包。解压下载的软件包到指定目录。运行安装程序&#xff…

代码理解 pseudo_labeled = outputs.max(1)[1]

import torchls torch.Tensor([[0.2,0.4],[0.3,0.2]]) print(ls.max(1))

Xss防护

Xss防护 CSP安全策略&#xff0c;类似于黑名单&#xff0c;只允许加载本地图片&#xff0c;外部链接图片无法链接防御成本极低&#xff0c;同时有很多指令&#xff0c;同源策略&#xff0c;可添加不同类型的指令实现不同的要求。&#xff08;同源策略&#xff1a;同端口&#…

C++从零开始的打怪升级之路(day47)

这是关于一个普通双非本科大一学生的C的学习记录贴 在此前&#xff0c;我学了一点点C语言还有简单的数据结构&#xff0c;如果有小伙伴想和我一起学习的&#xff0c;可以私信我交流分享学习资料 那么开启正题 今天分享的是关于set和map的知识点 1.关联式容器 在前面&#…

VUE 之 Vuex 和 Pina 介绍

Vuex 和 Pina 是两种不同的 Vue 状态管理库&#xff0c;它们在设计理念和使用方式上有一些区别。 Vuex: 官方状态管理库&#xff1a; Vuex 是 Vue.js 官方推荐的状态管理库&#xff0c;与 Vue 框架深度集成&#xff0c;提供了一种集中式存储管理应用中所有组件的状态的方式。…

STL之deque容器代码详解

1 基础概念 功能&#xff1a; 双端数组&#xff0c;可以对头端进行插入删除操作。 deque与vector区别&#xff1a; vector对于头部的插入删除效率低&#xff0c;数据量越大&#xff0c;效率越低。 deque相对而言&#xff0c;对头部的插入删除速度回比vector快。 vector访问…

Unity Shader实现UI流光效果

效果&#xff1a; shader Shader "UI/Unlit/Flowlight" {Properties{[PerRendererData] _MainTex("Sprite Texture", 2D) "white" {}_Color("Tint", Color) (1, 1, 1, 1)[MaterialToggle] PixelSnap("Pixel snap", float…