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深入学习之对象的属性
Aug 31 Python
Python中集合类型(set)学习小结
Jan 28 Python
Python简单删除目录下文件以及文件夹的方法
May 27 Python
详解Python的Django框架中的模版继承
Jul 16 Python
python 生成器生成杨辉三角的方法(必看)
Apr 10 Python
用Python设计一个经典小游戏
May 15 Python
Python3中使用PyMongo的方法详解
Jul 28 Python
基于anaconda下强大的conda命令介绍
Jun 11 Python
python配置grpc环境
Jan 01 Python
Python脚本如何在bilibili中查找弹幕发送者
Jun 04 Python
python 实现倒计时功能(gui界面)
Nov 11 Python
python中__slots__节约内存的具体做法
Jul 04 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生成随机数的三种方法
2014/09/10 PHP
php制作简单模版引擎
2016/04/07 PHP
宝塔面板在NGINX环境中TP5.1如何运行?
2021/03/09 PHP
Javascript解决常见浏览器兼容问题的12种方法
2010/01/04 Javascript
JQuery做的一个简单的点灯游戏分享
2014/07/16 Javascript
jQuery插件HighCharts绘制2D柱状图、折线图的组合双轴图效果示例【附demo源码下载】
2017/03/09 Javascript
详解前后端分离之VueJS前端
2017/05/24 Javascript
基于原生js运动方式关键点的总结(推荐)
2017/10/01 Javascript
基于Vue2.X的路由和钩子函数详解
2018/02/09 Javascript
9102年webpack4搭建vue项目的方法步骤
2019/02/20 Javascript
js实现图片3D轮播效果
2019/09/21 Javascript
weui中的picker使用js进行动态绑定数据问题
2019/11/06 Javascript
node.JS二进制操作模块buffer对象使用方法详解
2020/02/06 Javascript
express异步函数异常捕获示例详解
2020/11/30 Javascript
PyTorch上搭建简单神经网络实现回归和分类的示例
2018/04/28 Python
python获取交互式ssh shell的方法
2019/02/14 Python
Python3利用Dlib实现摄像头实时人脸检测和平铺显示示例
2019/02/21 Python
python数据归一化及三种方法详解
2019/08/06 Python
Python中注释(多行注释和单行注释)的用法实例
2019/08/28 Python
浅谈tensorflow之内存暴涨问题
2020/02/05 Python
浅谈python出错时traceback的解读
2020/07/15 Python
Python使用lambda抛出异常实现方法解析
2020/08/20 Python
浅谈Html5页面打开app的一些思考
2020/03/30 HTML / CSS
美国珠宝网上商店:Jeulia
2016/09/01 全球购物
美国领先的家庭健康检测试剂盒提供商:LetsGetChecked
2019/03/18 全球购物
一套比较完整的软件测试人员面试题
2012/05/13 面试题
工艺工程师工作职责
2013/11/23 职场文书
校园报刊亭的创业计划书
2014/01/02 职场文书
商场消防管理制度
2014/01/12 职场文书
读书活动总结
2014/04/28 职场文书
身边的榜样活动方案
2014/08/20 职场文书
2014年发展党员工作总结
2014/11/12 职场文书
2015年村党支部工作总结
2015/04/30 职场文书
校园运动会广播稿
2015/08/19 职场文书
你为什么是穷人?可能是这5个缺点造成
2019/07/11 职场文书
Python torch.flatten()函数案例详解
2021/08/30 Python