队列Joinablequeue的使用,以及生产者消费者模型的认识
时间:2019-09-16
本文章向大家介绍队列Joinablequeue的使用,以及生产者消费者模型的认识,主要包括队列Joinablequeue的使用,以及生产者消费者模型的认识使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
队列
进程彼此之间相互隔离,要实现进程间的通讯(IPC),multiprocess模块支持两种形式:队列和管道,这两种方式都是使用消息传递的
创建队列的类:
Queue([maxsize]):创建共享的进程队列,Queue是多进程安全的队列,可以使用Queue实现多进程之间大的数据传递.
参数介绍及:
maxsize是队列中允许最大项数,省略则无大小限制.
方法介绍:
put:方法用于插入数据到队列中.put方法有两个可选参数:blocked和timeout.
get:该方法可以从队列读取并且删除一个元素.同样,get方法有两个可选参数:blocked和timeout.
put_nowait:用处同put,默认blocked = False
get_nowait:用处同get,默认blocked = False
empty:调用此方法时队列为空则返回True,该结果不可靠,比如在返回True的过程中,如果队列中又加入了项目.
full:调用此方法时队列已满则返回True,该结果不可靠,比如在返回True的过程中,如果队列中的项目被取走.
qsize:返回队列中目前项目的正确数量,结果看也不可靠,在返回结果后,队列有可能会发生变化.
生产者和消费者模型
from multiprocessing import Process,JoinableQueue
import time,random
def producer(q,name):
for i in range(10):
print(f'生产者生产了{name}')
time.sleep(random.randint(1, 3))
q.put(f'{name}')
def consumer(q,name):
while True:
res = q.get()
time.sleep(random.randint(1, 3))
print(f'{name}买到了{res}')
q.task_done()
if __name__ == '__main__':
que = JoinableQueue()
p = Process(target=producer, args=(que, 'apple'))
c = Process(target=consumer, args=(que, 'con'))
p.start()
c.daemon = True
c.start()
p.join()
que.join()
原文地址:https://www.cnblogs.com/cheng825/p/11529087.html
- day10、nfs+rsync全网备份及实时同步
- Flask-信号(blinker)
- Python中的单例模式的几种实现方式的及优化
- 程序员学习python必备的4大网站,你用过几个?
- 知面不知心?AI帮你看懂对方的“小心思”
- 数据库连接池,本地线程,上下文管理
- 2018年微信小程序风口趋势预测
- 小程序走在取代APP路上
- 重磅!小程序社交立减金全面开放,快来领攻略
- VR/AR未来何去何从?
- 使用Python+Tensorflow的CNN技术快速识别验证码
- 数字化医院科研信息化管理平台的设计
- 人工智能双刃剑:可协助安全专家,也可带来挑战
- “人工智能+教育”巨浪冲击下,传统的教育理念是否还能幸存?
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Vue3.0源码结构分析
- 【每周一库】- cached - 缓存结构型、辅助函数记忆化
- meta生成器 —— 表单元素组件 meta表单代码meta的模板data变幻
- 不用写代码也能做表单 —— 加载meta即可 菜单表单加载json运行效果。ModelAbout
- 从0到1,手把手教你入门 etcd
- 数据结构:手把手带你了解 ”图“ 所有知识!(含DFS、BFS)
- 设计模式之单例模式
- AndroidStudio创建JNI 工程与调用
- Java 版植物大战僵尸思路和源码分享!
- 你好MyBatis 入门篇
- 你好MyBatis 中级篇
- 你好MyBatis 中高级篇
- Nginx反代理获取真实IP
- 你好MyBatis 高级篇
- redis实现分布式锁:他说,他的分布式锁,很润哦