Python实现多进程共享数据的方法分析


Posted in Python onDecember 04, 2017

本文实例讲述了Python实现多进程共享数据的方法。分享给大家供大家参考,具体如下:

示例一:

# -*- coding:utf-8 -*-
from multiprocessing import Process, Manager
import time
import random
def kkk(a_list, number):
  for i in range(10):
    a_list.append(i)
    time.sleep(random.randrange(2))
    print('这是进程{} {}'.format(number, a_list))
  print('这是进程{} {}'.format(number, a_list))
def jjj(a_list):
  for i in range(2):
    process = Process(target=kkk, args=(a_list, i))
    process.start()
if __name__ == '__main__':
  a_list = []
  process_0 = Process(target=jjj, args=(a_list,))
  process_0.start()
  process_0.join()
  print(a_list)
  print(len(a_list))
  print('it\'s ok')

输出:

这是进程0 [0]
这是进程0 [0, 1]
这是进程0 [0, 1, 2]
这是进程0 [0, 1, 2, 3]
这是进程1 [0]
这是进程0 [0, 1, 2, 3, 4]
这是进程1 [0, 1]
这是进程0 [0, 1, 2, 3, 4, 5]
这是进程1 [0, 1, 2]
这是进程1 [0, 1, 2, 3]
这是进程1 [0, 1, 2, 3, 4]
这是进程1 [0, 1, 2, 3, 4, 5]
这是进程0 [0, 1, 2, 3, 4, 5, 6]
这是进程0 [0, 1, 2, 3, 4, 5, 6, 7]
这是进程0 [0, 1, 2, 3, 4, 5, 6, 7, 8]
这是进程1 [0, 1, 2, 3, 4, 5, 6]
这是进程0 [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
这是进程0 [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
这是进程1 [0, 1, 2, 3, 4, 5, 6, 7]
这是进程1 [0, 1, 2, 3, 4, 5, 6, 7, 8]
这是进程1 [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
这是进程1 [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
[]
0
it's ok
Process finished with exit code 0

示例二:

使用 Manager

# -*- coding:utf-8 -*-
from multiprocessing import Process, Manager
import time
import random
def kkk(a_list, number):
  for i in range(10):
    a_list.append(i)
    time.sleep(random.randrange(2))
    print('这是进程{} {}'.format(number, a_list))
  print('这是进程{} {}'.format(number, a_list))
def jjj(a_list):
  for i in range(2):
    process = Process(target=kkk, args=(a_list, i))
    process.start()
if __name__ == '__main__':
  manager = Manager()
  a_list = manager.list()
  # a_list = []
  process_0 = Process(target=jjj, args=(a_list,))
  process_0.start()
  process_0.join()
  print(a_list)
  print(len(a_list))
  print('it\'s ok')

输出:

这是进程0 [0, 0]
这是进程0 [0, 0, 1]
这是进程0 [0, 0, 1, 2]
这是进程0 [0, 0, 1, 2, 3]
这是进程0 [0, 0, 1, 2, 3, 4]
这是进程1 [0, 0, 1, 2, 3, 4, 5]
这是进程0 [0, 0, 1, 2, 3, 4, 5, 1]
这是进程1 [0, 0, 1, 2, 3, 4, 5, 1, 6]
这是进程1 [0, 0, 1, 2, 3, 4, 5, 1, 6, 2]
这是进程1 [0, 0, 1, 2, 3, 4, 5, 1, 6, 2, 3]
这是进程1 [0, 0, 1, 2, 3, 4, 5, 1, 6, 2, 3, 4]
这是进程1 [0, 0, 1, 2, 3, 4, 5, 1, 6, 2, 3, 4, 5]
这是进程0 [0, 0, 1, 2, 3, 4, 5, 1, 6, 2, 3, 4, 5, 6]
这是进程0 [0, 0, 1, 2, 3, 4, 5, 1, 6, 2, 3, 4, 5, 6, 7]
这是进程0 [0, 0, 1, 2, 3, 4, 5, 1, 6, 2, 3, 4, 5, 6, 7, 8]
这是进程1 [0, 0, 1, 2, 3, 4, 5, 1, 6, 2, 3, 4, 5, 6, 7, 8, 9]
这是进程1 [0, 0, 1, 2, 3, 4, 5, 1, 6, 2, 3, 4, 5, 6, 7, 8, 9, 7]
这是进程0 [0, 0, 1, 2, 3, 4, 5, 1, 6, 2, 3, 4, 5, 6, 7, 8, 9, 7, 8]
这是进程0 [0, 0, 1, 2, 3, 4, 5, 1, 6, 2, 3, 4, 5, 6, 7, 8, 9, 7, 8]
这是进程1 [0, 0, 1, 2, 3, 4, 5, 1, 6, 2, 3, 4, 5, 6, 7, 8, 9, 7, 8]
这是进程1 [0, 0, 1, 2, 3, 4, 5, 1, 6, 2, 3, 4, 5, 6, 7, 8, 9, 7, 8, 9]
这是进程1 [0, 0, 1, 2, 3, 4, 5, 1, 6, 2, 3, 4, 5, 6, 7, 8, 9, 7, 8, 9]
[0, 0, 1, 2, 3, 4, 5, 1, 6, 2, 3, 4, 5, 6, 7, 8, 9, 7, 8, 9]
20
it's ok
Process finished with exit code 0

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

Python 相关文章推荐
Python语言编写电脑时间自动同步小工具
Mar 08 Python
python写的一个文本编辑器
Jan 23 Python
windows下python模拟鼠标点击和键盘输示例
Feb 28 Python
python通过pil模块将raw图片转换成png图片的方法
Mar 16 Python
Python之re操作方法(详解)
Jun 14 Python
Python3.X 线程中信号量的使用方法示例
Jul 24 Python
Python基于SMTP协议实现发送邮件功能详解
Aug 14 Python
详解Numpy中的广播原则/机制
Sep 20 Python
Python chardet库识别编码原理解析
Feb 18 Python
Python 删除List元素的三种方法remove、pop、del
Nov 16 Python
Python+Opencv实现把图片、视频互转的示例
Dec 17 Python
详解分布式系统中如何用python实现Paxos
May 18 Python
Python数据结构之栈、队列的实现代码分享
Dec 04 #Python
关于Python数据结构中字典的心得
Dec 04 #Python
python Flask实现restful api service
Dec 04 #Python
浅谈Python中带_的变量或函数命名
Dec 04 #Python
Python中对象的引用与复制代码示例
Dec 04 #Python
Python3 Random模块代码详解
Dec 04 #Python
利用python爬取斗鱼app中照片方法实例
Dec 03 #Python
You might like
PHP版自动生成文章摘要
2008/07/23 PHP
php 实现301重定向跳转实例代码
2016/07/18 PHP
简单的自定义php模板引擎
2016/08/26 PHP
基础的prototype.js常用函数及其用法
2007/03/10 Javascript
javascript学习笔记(十) js对象 继承
2012/06/19 Javascript
JavaScript中的普通函数与构造函数比较
2015/04/07 Javascript
JS中JSON对象和String之间的互转及处理技巧
2016/04/06 Javascript
JavaScript的Vue.js库入门学习教程
2016/05/23 Javascript
利用Angularjs和Bootstrap前端开发案例实战
2016/08/27 Javascript
AngularJS模板加载用法详解
2016/11/04 Javascript
用v-html解决Vue.js渲染中html标签不被解析的问题
2016/12/14 Javascript
javascript稀疏数组(sparse array)和密集数组用法分析
2016/12/28 Javascript
js中小数向上取整数,向下取整数,四舍五入取整数的实现(必看篇)
2017/02/13 Javascript
Node.js Buffer模块功能及常用方法实例分析
2019/01/05 Javascript
微信小程序实现上传多张图片、删除图片
2020/07/29 Javascript
[56:24]DOTA2上海特级锦标赛主赛事日 - 3 胜者组第二轮#1Liquid VS MVP.Phx第二局
2016/03/04 DOTA
[40:29]2018DOTA2亚洲邀请赛 4.7总决赛 LGD vs Mineski 第一场
2018/04/10 DOTA
[46:42]DOTA2-DPC中国联赛正赛 Aster vs Magma BO3 第二场 3月5日
2021/03/11 DOTA
numpy中实现二维数组按照某列、某行排序的方法
2018/04/04 Python
通过Pandas读取大文件的实例
2018/06/07 Python
基于OpenCV python3实现证件照换背景的方法
2019/03/22 Python
python找出因数与质因数的方法
2019/07/25 Python
python之列表推导式的用法
2019/11/29 Python
美国宠物护理专家:Revival Animal Health
2020/01/05 全球购物
什么是smarty? Smarty的优点是什么?
2013/08/11 面试题
大学生学业生涯规划
2014/01/05 职场文书
思想品德自我评价
2014/02/04 职场文书
“学雷锋活动月”总结
2014/03/09 职场文书
我爱我的祖国演讲稿
2014/05/04 职场文书
合同和协议有什么区别?
2014/10/08 职场文书
项目经理岗位职责
2015/01/31 职场文书
2015年中秋晚会主持词
2015/07/01 职场文书
2019假期福利管理制度!
2019/07/15 职场文书
创业计划书之养殖业
2019/10/11 职场文书
用Python的绘图库(matplotlib)绘制小波能量谱
2021/04/17 Python
Java Lambda表达式常用的函数式接口
2022/04/07 Java/Android