[b0037] python 归纳 (二二)_多进程数据共享和同步_管道Pipe
# -*- coding: utf-8 -*-
"""
多进程数据共享 管道Pipe 逻辑:
2个进程,各自发送数据到管道,对方从管道中取到数据 总结:
1、只适合两个进程
2、recv 会阻塞
3、其中一个进程结束了,管道还在,另外一个进程还能使用
4、可以把管道认为一个队列, 发送数据端,往队列写数据
接收数据端,从队列读数据,队列空了阻塞
单向管道 1个队列,双向管道 2个队列 使用:
1. 创建2个管道的两端的对象 pipe_left_conn,pipe_right_conn = Pipe()
2. 在两个进程中 分布 调用 收发命令 conn.send(messsage) con.recv() 参考:
Pipe对象返回的元组分别代表管道的两端,管道默认是全双工,两端都支持send和recv方法,
两个进程分别操作管道两端时不会有冲突,两个进程对管道一端同时读写时可能会有冲突:
""" from multiprocessing import Process,Pipe # 子进程函数
def f(conn):
conn.send("child send1")
conn.send([2,'test',None])
print(conn.recv())
conn.close() if __name__ == "__main__":
# 产生两个返回对象,一个是管道这一头,一个是另一头 # 创建管道,拿到两端对象
# 默认True,双向管道都能收发
# Pipe(False)单向管道 左边只接收,右边只发送
pipe_left_conn,pipe_right_conn = Pipe() p = Process(target=f,args=(pipe_right_conn,))
p.start() print(pipe_left_conn.recv()) pipe_left_conn.send('\nfather send') p.join() # 注意,子进程已经结束了,但是管理里的数据还在
print(pipe_left_conn.recv()) # print(parent_conn.recv()) # 此时管道空了,会阻塞 pipe_left_conn.close()
pipe_right_conn.close() """
Out: child send1 father send
[2, 'test', None]
"""
[b0037] python 归纳 (二二)_多进程数据共享和同步_管道Pipe的更多相关文章
- [b0036] python 归纳 (二一)_多进程数据共享和同步_服务进程Manager
# -*- coding: utf-8 -*- """ 多进程数据共享 服务器进程 multiprocessing.Manager 入门使用 逻辑: 20个子线程修改共享 ...
- [b0035] python 归纳 (二十)_多进程数据共享和同步_共享内存Value & Array
1. Code # -*- coding: utf-8 -*- """ 多进程 数据共享 共享变量 Value,Array 逻辑: 2个进程,对同一份数据,一个做加法,一 ...
- [b0041] python 归纳 (二六)_多进程数据共享和同步_事件Event
# -*- coding: utf-8 -*- """ 多进程 同步 事件multiprocessing.Event 逻辑: 子线程负责打印,会阻塞, 等待主进程发出控制 ...
- [b0040] python 归纳 (二五)_多进程数据共享和同步_信号量Semaphore
# -*- coding: utf-8 -*- """ 多进程同步 使用信号量 multiprocessing.Semaphore 逻辑: 启动5个进程,打印,每个各自睡 ...
- [b0039] python 归纳 (二四)_多进程数据共享和同步_锁Lock&RLock
# -*- coding: utf-8 -*- """ 多进程 锁使用 逻辑: 10个进程各种睡眠2秒,然后打印. 不加锁同时打印出来,总共2秒,加锁一个接一个打印,总共 ...
- [b0038] python 归纳 (二三)_多进程数据共享和同步_队列Queue
1 队列读写 # -*- coding: utf-8 -*- """ 多进程 共享 队列 multiprocessing.Process 逻辑: 一个进程往队列写数据, ...
- [b0027] python 归纳 (十二)_并发队列Queue的使用
# -*- coding: UTF-8 -*- """ 学习队列 Queue 总结: 1. 队列可以设置大小,也可以无限大小 2. 空了,满了,读写时可以阻塞,也可以报错 ...
- Py修行路 python基础 (二十五)线程与进程
操作系统是用户和硬件沟通的桥梁 操作系统,位于底层硬件与应用软件之间的一层 工作方式:向下管理硬件,向上提供接口 操作系统进行切换操作: 把CPU的使用权切换给不同的进程. 1.出现IO操作 2.固定 ...
- Python爬虫利器二之Beautiful Soup的用法
上一节我们介绍了正则表达式,它的内容其实还是蛮多的,如果一个正则匹配稍有差池,那可能程序就处在永久的循环之中,而且有的小伙伴们也对写正则表达式的写法用得不熟练,没关系,我们还有一个更强大的工具,叫Be ...
随机推荐
- Python进阶二
文章目录 函数参数1.位置传递2.名称传递 def f(a,b): f(1,2) f(b=2,a=1) 3.可选参数传递(可选参数必须放在最后)def f(a,b=1) ✔def f(b=1,a) ❌ ...
- Customize the Application UI and Behavior 自定义应用程序UI和行为
In XAF, the business model defines the database structure and UI appearance. Changes to your persist ...
- Go--实现两个大数相乘
----- import ( "bufio" "fmt" "os" "strings" ) func multi(str ...
- OpenCV:获取图像当中某一点的坐标
import numpy as np image=np.zeros((300,300,3),dtype='uint8') (cx,cy)=image.shape[1]//2,image.shape[0 ...
- CookieJar转换成不同的数据格式
- AcWing 27. 数值的整数次方
地址 https://www.acwing.com/problem/content/description/26/ 题目描述实现函数double Power(double base, int expo ...
- 加速自己的hexo,使用GitHub+Coding实现国内外网站加速
在配置好hexo之后,我们发现访问网站很慢,但又不是我们使用的主题的问题,那么就是网络环境的影响,即使我们使用了CDN加速,但还是没有我们国内的网站访问起来快速,(听说去美国的服务器要经过太平洋下面的 ...
- golang+vscode开发环境的搭建
一.windows下安装golang开发环境 (1)配置GOROOT变量,在系统变量中点击新建,变量值是golang安装文件夹目录 (2)配置Path变量,选中Path点编辑即可,在变量值后面追加;% ...
- 数据库访问接口(ODBC,OLEDB,ADO)
数据库访问接口发展历史 ODBC历史 ODBC(Open Database Connectivity,开放数据库互连).要了解ODBC是什么,先了解一下数据库连接的相关知识.在最开始连接数据库时,由于 ...
- cartographer 3D运行录制rosbag包
目录: 1.运行多线激光雷达: 2.运行IMU: 3.录制rosbag包: 4.配置cartographer: 5.查看地图: 1.运行多线激光雷达: 主要是测试雷达是否正在运行,确认雷达点云topi ...