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中Matplotlib的坐标轴的坐标区间的设定实例讲解
May 25 Python
Python实现合并两个列表的方法分析
May 28 Python
Python3.7中安装openCV库的方法
Jul 11 Python
详解python中sort排序使用
Mar 23 Python
Python函数参数匹配模型通用规则keyword-only参数详解
Jun 10 Python
Django集成celery发送异步邮件实例
Dec 17 Python
.dcm格式文件软件读取及python处理详解
Jan 16 Python
Python Selenium 设置元素等待的三种方式
Mar 18 Python
python多线程实现同时执行两个while循环的操作
May 02 Python
Django contrib auth authenticate函数源码解析
Nov 12 Python
selenium+headless chrome爬虫的实现示例
Jan 08 Python
python通配符之glob模块的使用详解
Apr 24 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
福利彩票幸运号码自动生成器
2006/10/09 PHP
如何使用php实现评委评分器
2015/07/31 PHP
py文件转exe时包含paramiko模块出错解决方法
2016/08/12 PHP
PHP实现的curl批量请求操作示例
2018/06/06 PHP
js模拟实现Array的sort方法
2007/12/11 Javascript
$("").click与onclick的区别示例介绍
2014/09/25 Javascript
Javascript缓存API
2016/06/14 Javascript
利用jQuery的动画函数animate实现豌豆发射效果
2016/08/28 Javascript
JQuery.validationEngine表单验证插件(推荐)
2016/12/10 Javascript
xmlplus组件设计系列之按钮(2)
2017/04/26 Javascript
jQuery导航条固定定位效果实例代码
2017/05/26 jQuery
vue + element-ui实现简洁的导入导出功能
2017/12/22 Javascript
Vue2.0 http请求以及loading展示实例
2018/03/06 Javascript
vue生成文件本地打开查看效果的实例
2018/09/06 Javascript
Node.js 如何利用异步提升任务处理速度
2019/01/07 Javascript
详解json串反转义(消除反斜杠)
2019/08/12 Javascript
使用node.JS中的url模块解析URL信息
2020/02/06 Javascript
[00:32]2018DOTA2亚洲邀请赛Newbee出场
2018/04/03 DOTA
结合Python的SimpleHTTPServer源码来解析socket通信
2016/06/27 Python
详解python3百度指数抓取实例
2016/12/12 Python
Python数据结构与算法之图结构(Graph)实例分析
2017/09/05 Python
Pycharm代码无法复制,无法选中删除,无法编辑的解决方法
2018/10/22 Python
python gdal安装与简单使用
2019/08/01 Python
Python适配器模式代码实现解析
2019/08/02 Python
解决pycharm启动后总是不停的updating indices...indexing的问题
2019/11/27 Python
python和pywin32实现窗口查找、遍历和点击的示例代码
2020/04/01 Python
关于python的缩进规则的知识点详解
2020/06/22 Python
解决python 输出到csv 出现多空行的情况
2021/03/24 Python
外贸实习生自荐信范文
2013/11/24 职场文书
仓库主管的岗位职责
2013/12/04 职场文书
党日活动总结
2014/05/07 职场文书
团结就是力量演讲稿
2014/05/21 职场文书
应届大专生自荐书
2014/06/16 职场文书
2014年学校法制宣传日活动总结
2014/11/01 职场文书
MySql存储过程之逻辑判断和条件控制
2021/05/26 MySQL
新手入门Mysql--sql执行过程
2021/06/20 MySQL