Python 进程操作之进程间通过队列共享数据,队列Queue简单示例


Posted in Python onOctober 11, 2019

本文实例讲述了Python 进程操作之进程间通过队列共享数据,队列Queue。分享给大家供大家参考,具体如下:

队列中的数据是放在内存中的,可以通过分布式缓存redis优化队列。

demo.py(进程通过队列共享数据):

import multiprocessing
def download_from_web(q):
  """下载数据"""
  # 模拟从网上下载的数据
  data = [11, 22, 33, 44]
  # 向队列中写入数据
  for temp in data:
    q.put(temp) # 队列中写数据,队列满了会阻塞。 put_nowait() 队列满了会抛异常
  print("---下载器已经下载完了数据并且存入到队列中----")
def analysis_data(q):
  """数据处理"""
  waitting_analysis_data = list()
  # 从队列中获取数据
  while True:
    data = q.get() # 队列中读数据,队列空了会阻塞。 get_nowait() 队列空了会抛异常
    waitting_analysis_data.append(data)
    if q.empty(): # 队列是否为空。 q.full() 队列是否满了。
      break
  # 模拟数据处理
  print(waitting_analysis_data)
def main():
  # 1. 创建一个队列 (先进先出)
  q = multiprocessing.Queue(10) # 最多放10个数据。 如果不指定长度,默认最大(和硬件相关)
  # 2. 创建多个进程,将队列的引用当做实参进行传递
  p1 = multiprocessing.Process(target=download_from_web, args=(q,))
  p2 = multiprocessing.Process(target=analysis_data, args=(q,))
  p1.start()
  p2.start()
if __name__ == "__main__":
  main()

运行结果:

---下载器已经下载完了数据并且存入到队列中----
[11, 22, 33, 44]

希望本文所述对大家Python程序设计有所帮助。

Python 相关文章推荐
Python使用迭代器打印螺旋矩阵的思路及代码示例
Jul 02 Python
Swift中的协议(protocol)学习教程
Jul 08 Python
python+opencv轮廓检测代码解析
Jan 05 Python
python利用itertools生成密码字典并多线程撞库破解rar密码
Aug 12 Python
详解如何在cmd命令窗口中搭建简单的python开发环境
Aug 29 Python
Python监控服务器实用工具psutil使用解析
Dec 19 Python
Python importlib动态导入模块实现代码
Apr 16 Python
查看keras各种网络结构各层的名字方式
Jun 11 Python
Python logging模块异步线程写日志实现过程解析
Jun 30 Python
编译 pycaffe时报错:fatal error: numpy/arrayobject.h没有那个文件或目录
Nov 29 Python
pytorch中的model=model.to(device)使用说明
May 24 Python
Python OpenCV之常用滤波器使用详解
Apr 07 Python
Python进程,多进程,获取进程id,给子进程传递参数操作示例
Oct 11 #Python
Python中的延迟绑定原理详解
Oct 11 #Python
python pycharm的安装及其使用
Oct 11 #Python
详解Python3迁移接口变化采坑记
Oct 11 #Python
Python 、Pycharm、Anaconda三者的区别与联系、安装过程及注意事项
Oct 11 #Python
Pycharm 2019 破解激活方法图文详解
Oct 11 #Python
python 扩展print打印文件路径和当前时间信息的实例代码
Oct 11 #Python
You might like
用php和MySql来与ODBC数据连接
2006/10/09 PHP
PHP将进程作为守护进程的方法
2015/03/19 PHP
详解WordPress中简码格式标签编写的基本方法
2015/12/22 PHP
php实现无限级分类查询(递归、非递归)
2016/03/10 PHP
PHP面向对象自动加载机制原理与用法分析
2016/10/14 PHP
PHP用户验证和标签推荐的简单使用
2016/10/31 PHP
微信公众平台开发教程③ PHP实现微信公众号支付功能图文详解
2019/04/10 PHP
javascript应用:Iframe自适应其加载的内容高度
2007/04/10 Javascript
Javascript 面试题随笔
2011/03/31 Javascript
jQuery实现单击弹出Div层窗口效果(可关闭可拖动)
2015/09/19 Javascript
javascript手风琴下拉菜单实现代码
2015/11/12 Javascript
javascript之IE版本检测超简单方法
2016/08/20 Javascript
将form表单通过ajax实现无刷新提交的简单实例
2016/10/12 Javascript
详解利用exif.js解决ios手机上传竖拍照片旋转90度问题
2016/11/04 Javascript
vue-router:嵌套路由的使用方法
2017/02/21 Javascript
Bootstrap组件之下拉菜单,多级菜单及按钮布局方法实例
2017/05/25 Javascript
详解jquery选择器的原理
2017/08/01 jQuery
JQuery判断正整数整理小结
2017/08/21 jQuery
Vue-router结合transition实现app前进后退动画切换效果的实例
2017/10/11 Javascript
Vue.directive()的用法和实例详解
2018/03/04 Javascript
vue-cli项目中使用Mockjs详解
2018/05/14 Javascript
react高阶组件添加和删除props
2019/04/26 Javascript
javascript简单实现深浅拷贝过程详解
2019/10/08 Javascript
Vue Router 实现动态路由和常见问题及解决方法
2020/03/06 Javascript
[58:09]Spirit vs NB Supermajor小组赛 A组败者组决赛 BO3 第三场 6.2
2018/06/03 DOTA
Python函数式编程指南(四):生成器详解
2015/06/24 Python
Python 面试中 8 个必考问题
2018/11/16 Python
Python reversed反转序列并生成可迭代对象
2020/10/22 Python
德国机车企业:FC-Moto
2017/10/27 全球购物
新西兰Bookabach:查找全球度假屋
2020/12/03 全球购物
大专生工程监理求职信
2013/10/04 职场文书
大学生自荐书范文
2013/12/10 职场文书
《挑山工》的教学反思
2014/02/16 职场文书
运动会加油稿20字
2014/11/15 职场文书
班主任寄语2015
2015/02/26 职场文书
新员工试用期工作总结2015
2015/05/28 职场文书