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发腾讯微博代码分享
Jan 10 Python
Python中的模块和包概念介绍
Apr 13 Python
在Python中操作字典之update()方法的使用
May 22 Python
python中如何使用朴素贝叶斯算法
Apr 06 Python
python 常用的基础函数
Jul 10 Python
使用python 写一个静态服务(实战)
Jun 28 Python
浅谈pymysql查询语句中带有in时传递参数的问题
Jun 05 Python
对python中list的五种查找方法说明
Jul 13 Python
Scrapy中如何向Spider传入参数的方法实现
Sep 28 Python
Python识别处理照片中的条形码
Nov 16 Python
Python anaconda安装库命令详解
Oct 16 Python
使用opencv-python如何打开USB或者笔记本前置摄像头
Jun 21 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之第一天
2006/10/09 PHP
DEDE采集大师官方留后门的删除办法
2011/01/08 PHP
set_include_path和get_include_path使用及注意事项
2013/02/02 PHP
php几个预定义变量$_SERVER用法小结
2014/11/07 PHP
老生常谈PHP 文件写入和读取(必看篇)
2017/05/22 PHP
Javascript学习笔记6 prototype的提出
2010/01/11 Javascript
javascript中字符串替换函数replace()方法与c# 、vb 替换有一点不同
2010/06/25 Javascript
我的javascript 函数链之演变
2011/04/07 Javascript
JavaScript网页定位详解
2014/01/13 Javascript
jquery实现多行文字图片滚动效果示例代码
2014/10/10 Javascript
jquery实现TAB选项卡鼠标经过带延迟效果的方法
2015/07/27 Javascript
Bootstrap框架动态生成Web页面文章内目录的方法
2016/05/12 Javascript
简单实现Vue的observer和watcher
2016/12/21 Javascript
Angular2学习教程之TemplateRef和ViewContainerRef详解
2017/05/25 Javascript
薪资那么高的Web前端必看书单
2017/10/13 Javascript
简单实现jquery隔行变色
2017/11/09 jQuery
使用ThinkJs搭建微信中控服务的实现方法
2019/08/08 Javascript
[02:04]2014DOTA2国际邀请赛 BBC小组赛第三天总结
2014/07/12 DOTA
Python Json模块中dumps、loads、dump、load函数介绍
2018/05/15 Python
django加载本地html的方法
2018/05/27 Python
Python numpy实现二维数组和一维数组拼接的方法
2018/06/05 Python
python获取微信小程序手机号并绑定遇到的坑
2018/11/19 Python
python区分不同数据类型的方法
2019/10/14 Python
Python 模拟动态产生字母验证码图片功能
2019/12/24 Python
python GUI库图形界面开发之PyQt5切换按钮控件QPushButton详细使用方法与实例
2020/02/28 Python
专注澳大利亚特产和新西兰特产的澳洲中文网:0061澳洲制造
2019/03/24 全球购物
联想C++笔试题
2012/06/13 面试题
全国优秀辅导员事迹材料
2014/05/14 职场文书
单位单身证明样本
2014/10/11 职场文书
2014年数学教师工作总结
2014/12/03 职场文书
接收函格式
2015/01/30 职场文书
公司放假通知范文
2015/04/14 职场文书
推普标语口号大全
2015/12/26 职场文书
《认识年月日》教学反思
2016/02/19 职场文书
Python中使用Lambda函数的5种用法
2021/04/01 Python
python 机器学习的标准化、归一化、正则化、离散化和白化
2021/04/16 Python