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操作Elasticsearch数据索引的教程
Apr 08 Python
以windows service方式运行Python程序的方法
Jun 03 Python
python实现的正则表达式功能入门教程【经典】
Jun 05 Python
Python基于递归算法求最小公倍数和最大公约数示例
Jul 27 Python
python3利用venv配置虚拟环境及过程中的小问题小结
Aug 01 Python
numpy.random模块用法总结
May 27 Python
python Tkinter的图片刷新实例
Jun 14 Python
python异常触发及自定义异常类解析
Aug 06 Python
pygame用blit()实现动画效果的示例代码
May 28 Python
Python代码注释规范代码实例解析
Aug 14 Python
python字符串常规操作大全
May 02 Python
Python os和os.path模块详情
Apr 02 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
PHP5 的对象赋值机制介绍
2011/08/02 PHP
php检测文件编码的方法示例
2014/04/25 PHP
PHP fastcgi模式上传大文件(大约有300多K)报错
2014/09/28 PHP
PHP上传文件时自动分配路径的方法
2015/01/09 PHP
PHP中list方法用法示例
2016/12/01 PHP
PHP一致性hash分布式算法封装类定义与用法示例
2018/08/04 PHP
javascript之典型高阶函数应用介绍二
2013/01/10 Javascript
JavaScript中使用concat()方法拼接字符串的教程
2015/06/06 Javascript
深入分析下javascript中的[]()+!
2015/07/07 Javascript
JavaScript中rem布局在react中的应用
2015/12/09 Javascript
js获取form表单所有数据的简单方法
2016/08/18 Javascript
原生js实现可拖拽效果
2017/02/28 Javascript
深入解析js轮播插件核心代码的实现过程
2017/04/14 Javascript
Nodejs回调加超时限制两种实现方法
2017/06/09 NodeJs
微信小程序实现折线图的示例代码
2019/06/07 Javascript
微信小程序实现3D轮播图效果(非swiper组件)
2019/09/21 Javascript
es6中Promise 对象基本功能与用法实例分析
2020/02/23 Javascript
基于JS实现快速读取TXT文件
2020/08/25 Javascript
[02:55]2018DOTA2国际邀请赛勇士令状不朽珍藏Ⅲ饰品一览
2018/08/01 DOTA
使用python删除nginx缓存文件示例(python文件操作)
2014/03/26 Python
python编程测试电脑开启最大线程数实例代码
2018/02/09 Python
浅谈Python黑帽子取代netcat
2018/02/10 Python
pycharm设置注释颜色的方法
2018/05/23 Python
python 集合 并集、交集 Series list set 转换的实例
2018/05/29 Python
python 实现求解字符串集的最长公共前缀方法
2018/07/20 Python
在scrapy中使用phantomJS实现异步爬取的方法
2018/12/17 Python
Python 一句话生成字母表的方法
2019/01/02 Python
Django对数据库进行添加与更新的例子
2019/07/12 Python
python队列原理及实现方法示例
2019/11/27 Python
python解析命令行参数的三种方法详解
2019/11/29 Python
python上下文管理的使用场景实例讲解
2021/03/03 Python
Brasty波兰:香水、化妆品、手表网上商店
2019/04/15 全球购物
论文评语大全
2014/04/29 职场文书
2014年教育教学工作总结
2014/11/13 职场文书
卫生院义诊活动总结
2015/05/07 职场文书
MySQL慢查询优化解决问题
2022/03/17 MySQL