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 相关文章推荐
深入讲解Java编程中类的生命周期
Feb 05 Python
Python判断文本中消息重复次数的方法
Apr 27 Python
基于Python实现对PDF文件的OCR识别
Aug 05 Python
django中静态文件配置static的方法
May 20 Python
Python sorted函数详解(高级篇)
Sep 18 Python
浅析PyTorch中nn.Module的使用
Aug 18 Python
如何安装2019Pycharm最新版本(详细教程)
Sep 26 Python
深度学习入门之Pytorch 数据增强的实现
Feb 26 Python
Python GUI编程学习笔记之tkinter控件的介绍及基本使用方法详解
Mar 30 Python
Python环境管理virtualenv&virtualenvwrapper的配置详解
Jul 01 Python
Python中实现一行拆多行和多行并一行的示例代码
Sep 06 Python
基于Django集成CAS实现流程详解
Nov 28 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与python实现的线程池多线程爬虫功能示例
2016/10/12 PHP
Zend Framework入门教程之Zend_Registry组件用法详解
2016/12/09 PHP
JavaScript使用cookie
2007/02/02 Javascript
JS拖动技术 关于setCapture使用
2010/12/09 Javascript
利用JS判断用户是否上网(连接网络)
2013/12/23 Javascript
js类式继承的具体实现方法
2013/12/31 Javascript
js变量、作用域及内存详解
2014/09/23 Javascript
avalonjs制作响应式瀑布流特效
2015/05/06 Javascript
JavaScript中toString()方法的使用详解
2015/06/05 Javascript
javascript实现跨域的方法汇总
2015/06/25 Javascript
javascript实现输出指定行数正方形图案的方法
2015/08/03 Javascript
jQuery基于cookie实现的购物车实例分析
2015/12/24 Javascript
深入理解Webpack 中路径的配置
2017/06/17 Javascript
Vee-Validate的使用方法详解
2017/09/22 Javascript
angularJs-$http实现百度搜索时的动态下拉框示例
2018/02/27 Javascript
Vue快速实现通用表单验证功能
2019/12/05 Javascript
微信小程序 this.triggerEvent()的具体使用
2019/12/10 Javascript
Vue + ts实现轮播插件的示例
2020/11/10 Javascript
详解template标签用法(含vue中的用法总结)
2021/01/12 Vue.js
Python爬虫爬验证码实现功能详解
2016/04/14 Python
解决Python的str强转int时遇到的问题
2018/04/09 Python
使用python判断jpeg图片的完整性实例
2019/06/10 Python
python生成特定分布数的实例
2019/12/05 Python
python读写文件write和flush的实现方式
2020/02/21 Python
Python环境使用OpenCV检测人脸实现教程
2020/10/19 Python
python语言time库和datetime库基本使用详解
2020/12/25 Python
Html5 web本地存储实例详解
2016/07/28 HTML / CSS
总结html5自定义属性有哪些
2020/04/01 HTML / CSS
美国滑雪和滑雪板商店:Buckman
2018/03/03 全球购物
法国足球商店:Footcenter
2019/07/06 全球购物
小学生成长感言
2014/01/30 职场文书
新春文艺演出主持词
2014/03/27 职场文书
寄语是什么意思
2014/04/10 职场文书
情侣之间的道歉短信
2015/05/12 职场文书
导游词之千岛湖
2019/09/23 职场文书
Javascript 解构赋值详情
2021/11/17 Javascript