线程_进程间通信Queue合集
2023-09-11 14:21:27 时间
# Queue的工作原理
from multiprocessing import Queue
q = Queue(3)#初始化一个Queue对象,最多可接收3条put消息
q.put("Info1")
q.put("Info2")
print("q是否满了",q.full())#查看q是否满了
q.put("Info3")
print("q是否满了",q.full())
try:
q.put_nowait("info4")
except:
print("消息列队已经满了,现有消息数量为:%s"%(q.qsize()))
# 使用q.qsize()查看数量
# 先验证是否满了,再写入
if not q.full():
q.put_nowait("info4")
# 读取信息时,先判断消息列队是否为空,再读取
if not q.empty():
print("开始读取")
for i in range(q.qsize()):
print(q.get_nowait())
from multiprocessing import Queue
from multiprocessing import Process
import os,time,random
def write(q):
for value in ['a','b','c']:
print("Put %s to q ..."%(value))
q.put(value)
time.sleep(random.random())
def read(q):
while True:
if not q.empty():
value = q.get(True)
print("Get %s from Queue..."%(value))
time.sleep(random.random())
else:
break
if __name__ == '__main__':
#父进程创建Queue,传给各个子进程
q = Queue()
pw = Process(target=write,args=(q,))
pr = Process(target=read,args=(q,))
pw.start()
# 等待pw结束
pw.join()
pr.start()
pr.join()
print("数据写入读写完成")
from multiprocessing import Manager,Pool
import os,time,random
# 名称为reader 输出子进程和父进程 os 输出q的信息
def reader(q):
print("reader启动,子进程:%s,父进程:%s"%(os.getpid(),os.getppid()))
for i in range(q.qsize()):#在0 ~ qsize范围内
print("获取到queue的信息:%s"%(q.get(True)))
def writer(q):
print("writer启动,子进程:%s,父进程:%s"%(os.getpid(),os.getppid()))
for i in "HanYang":#需要写入到 q 的数据
q.put(i)
if __name__ == '__main__':
print("%s 开始 "%(os.getpid()))
q = Manager().Queue()#Queue使用multiprocessing.Manager()内部的
po = Pool()#创建一个线程池
po.apply(writer,(q,))#使用apply阻塞模式
po.apply(reader,(q,))
po.close()#关闭
po.join()#等待结束
print("(%s) 结束"%(os.getpid()))
2020-05-07
相关文章
- 进程?线程?小朋友你是否有很多问号?
- Windows核心编程 第四章 进程(下)
- 安全类工具制作第005篇:进程管理器(下)
- python并发编程之进程、线程、协程的调度原理(六)
- linux的子进程调用exec( )系列函数
- Node.js的线程和进程
- 进程,线程与多核,多cpu之间的关系
- python之进程和线程的对比
- 操作系统4小时速成:进程管理复习重点,进程,线程,处理机调度,进程同步,死锁
- [转]进程与线程及其区别
- 【linux】:进程控制
- 【Linux操作系统】进程优先级和进程切换
- 进程和线程
- 《C++多线程编程实战》——2.3 解释进程模型
- Dalvik虚拟机进程和线程的创建过程分析
- java线程与进程的比较
- proc - 进程信息伪文件系统
- 添加已运行daemon进程(falcon-agent)到supervisor测试
- 进程(线程)间通信与网络通信的联系与比较
- linux下查看一个进程的启动时间和运行时间
- win32 进程崩溃时禁止弹出错误对话框
- 【JAVA】进程与线程的概念_继承Thread类创建线程_实现Runnable接口创建线程
- Python 基础 之 python 中 进程、线程、协程对比 区别和联系
- Python 基础 之 python 进程知识点整理,实现一个简单使用进程池的多进程文件夹文件copy器
- 据进程pid查端口,根据端口port查进程
- (15)python进程与线程(待写)
- (1.1)学习笔记之mysql体系结构(内存、进程、线程)
- [CareerCup] 16.1 Thread and Process 线程和进程
- python爬虫之多线程threading、多进程multiprocessing、协程aiohttp 批量下载图片
- 计算机操作系统:实验1【进程调度】