首页 > 其他分享 >管道

管道

时间:2024-05-22 13:19:06浏览次数:16  
标签:customer right pipe 管道 conn left

【一】管道类介绍

'''

Pipe

from multiprocessing import Pipe

【1】创建管道对象

left_pipe, right_pipe = Pipe() # 默认参数 是 dumplex : 默认双通道的管道

【2】主要的方法

(1)接收数据

先将另一端关闭 ---> 一端取数据

left_pipe.close()
right_pipe.recv()

(2)发送数据

left_pipe.close()
right_pipe.send()
'''

【二】使用

from multiprocessing import Pipe, Process

def producer(pipe_conn, name):
# 【1】获取到两个管道对象 左侧管道对象 右侧管道对象
left_conn, right_conn = pipe_conn
# 【2】放数据
# 先关闭一侧管道
right_conn.close()
# 再通过右侧管道传数据
for i in range(5):
data = f'producer {name} 生产了 {i}'
print(data)
left_conn.send(data)
# 传递完所有数据之后一定不要忘了将打开的管道关闭
left_conn.close()

def customer(pipe_conn, name):
# 【1】获取到两个管道对象 左侧管道对象 右侧管道对象
left_conn, right_conn = pipe_conn
# 【2】取数据
# 关闭左管道
left_conn.close()
# 通过右管道取数据
while True:
data = right_conn.recv()
print(f'customer {name} 消费了 {data}')
if not data:
break
right_conn.close()

def main():
# 【一】创建管道对象
pipe = Pipe()
# 【二】创建消费者对象和生产者对象
producer_one = Process(
target=producer,
args=(pipe, f'prod_one')
)
producer_one.start()
# 【三】创建消费者
customer_one = Process(
target=customer,
args=(pipe, f'customer_one')
)
customer_one.daemon = True
customer_one.start()
producer_one.join()

管道需要创建一个管道对象

管道对象里面有左右两个管道对象

传数据的时候要关闭一侧,从另一侧传数据进去

取数据的时候也要关闭一侧,从另一端取数据

if name == 'main':
main()

标签:customer,right,pipe,管道,conn,left
From: https://www.cnblogs.com/zenopan101861/p/18206052

相关文章

  • 进程通信--管道(存在于内核区)
    在Linux中,管道(pipe)是一种用于进程间通信(IPC)的机制,它允许数据在两个进程之间单向传输。管道有两种类型:匿名管道和命名管道(FIFO)。匿名管道匿名管道通常用于具有父子关系的进程之间的通信。它由pipe()系统调用创建。匿名管道只存在于创建它的进程及其子进程之间。匿名管道创建后,......
  • IceRPC之调用管道Invocation pipeline与传出请求Outgoing request->快乐的RPC
    作者引言.Net8.0下的新RPC很高兴啊,我们来到了IceRPC之调用管道Invocationpipeline与传出请求Outgoingrequest->快乐的RPC,基础引导,让自已不在迷茫,快乐的畅游世界。调用管道Invocationpipeline了解如何发送请求requests和接收响应responses。定义发送请求并接收......
  • 解决vscode连接远程服务器出现Bad owner or permissions on C:\\Users\\Administr
    1.找到.ssh文件夹。它通常位于C:\Users2.右键单击.ssh文件夹,然后单击“属性”,选择“安全”3.单击“高级”。单击“禁用继承”,单击“确定”。将出现警告弹出窗口。单击“从此对象中删除所有继承的权限”。4.此时所有用户都将被删除。添加所有者。在同一窗口中,单击“编辑”按......
  • linux9-grep&wc&管道符
    linux9-grep&wc&管道符grep选项-n,表示在结果中显示匹配的行的行号grep[-n]关键字文件路径#通过touch创建文件touchtest.txt#通过cat命令查看文件内容cattest.txt#通过关键字"iteheima"匹配到对应的文本行grep"itheima"test.txtwcwc,wordcut,统计......
  • 在Linux中,如何在Linux中使用管道?
    在Linux中,管道是一种强大的机制,它允许你将一个命令的输出直接作为另一个命令的输入,从而实现多个命令的串联执行,完成复杂的任务。管道使用符号|(竖线)表示。下面是如何在Linux中使用管道的详细说明:1.基本用法命令结构:command1|command2这里,command1的输出会直接传递给c......
  • 在Linux中,什么是管道操作,以及如何使用它?
    在Linux中,管道操作是一种强大而灵活的机制,用于在多个命令或者进程之间传输数据。它允许一个命令的输出直接作为另一个命令的输入,从而实现数据的连续处理,无需通过中间文件来存储数据。管道的核心思想是提高命令行操作的效率和简洁性。1.管道操作的概念管道实质上是一个进程间通......
  • linux3-管道符、重定向、环境变量
    1.>输出重定向1[root@linuxprobe~]#manbash>readme.txt//将bash的使用手册写入readme.txt2[root@linuxprobe~]#catreadme.txt3BASH(1)GeneralCommandsManualBASH(1)4覆盖重定向5[root@linuxprobe~]#echo"WelcometoLinuxProbe.Com">readme.t......
  • nestjs 中管道的使用-验证DTO
    1.安装管道nestgpirole意思是安装一个role模块的管道2.在controller中使用管道 管道的作用:1.数据的转换2.DTO规则验证 一般使用全局配置管道 区别:自己写:需要一个个的带入 ......
  • 进程间通信(管道)
    进程间通信(管道)一、关于创建管道的类(1)创建管道的类Pipe([duplex])在进程之间创建一条管道,并返回元组(conn1,conn2),其中conn1,conn2表示管道两端的连接对象强调一点:必须在产生Process对象之前产生管道duplex默认管道是全双工的,如果将duplex射成False,conn1只能用于接收,conn2......
  • 在Linux中,管道(pipe)和重定向(redirection)的是什么?
    在Linux中,管道(pipe)和重定向(redirection)是两种强大的命令行工具,它们允许用户在不同的命令和程序之间传输数据,以及控制命令输出的显示和存储方式。1.管道(Pipe)概念:管道是一种将一个命令的输出直接作为另一个命令输入的方法。它通过|符号实现,允许多个命令连接在一起,形成一个命令......