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中使用mongoengine操作MongoDB教程
Apr 24 Python
python多进程共享变量
Apr 06 Python
django反向解析和正向解析的方式
Jun 05 Python
python matlibplot绘制多条曲线图
Feb 19 Python
Python3 SSH远程连接服务器的方法示例
Dec 29 Python
python实现词法分析器
Jan 31 Python
python基于Selenium的web自动化框架
Jul 14 Python
python接口自动化如何封装获取常量的类
Dec 24 Python
一文轻松掌握python语言命名规范规则
Jun 18 Python
Django DRF APIView源码运行流程详解
Aug 17 Python
python中reload重载实例用法
Dec 15 Python
pytorch加载预训练模型与自己模型不匹配的解决方案
May 13 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
CodeIgniter自定义控制器MY_Controller用法分析
2016/01/20 PHP
PHP微信开发之模板消息回复
2016/06/24 PHP
php抽象方法和普通方法的区别点总结
2019/10/13 PHP
用jQuery实现检测浏览器及版本的脚本代码
2008/01/22 Javascript
使用JS 清空File控件的路径值
2013/07/08 Javascript
jquery scroll()区分横向纵向滚动条的方法
2014/04/04 Javascript
5个书写JavaScript代码的坏习惯,看看你中枪了没?
2014/11/06 Javascript
js阻止浏览器默认行为触发的通用方法(推荐)
2016/05/15 Javascript
js实时获取窗口大小变化的实例代码
2016/11/18 Javascript
鼠标经过出现气泡框的简单实例
2017/03/17 Javascript
详解node服务器中打开html文件的两种方法
2017/09/18 Javascript
React如何利用相对于根目录进行引用组件详解
2017/10/09 Javascript
EasyUI的DataGrid绑定Json数据源的示例代码
2017/12/16 Javascript
JavaScript事件对象event用法分析
2018/07/27 Javascript
vue 插件的方法代码详解
2019/06/06 Javascript
深度解读vue-resize的具体用法
2020/07/08 Javascript
Python实现Linux下守护进程的编写方法
2014/08/22 Python
Windows下Python的Django框架环境部署及应用编写入门
2016/03/10 Python
CentOS 6.5下安装Python 3.5.2(与Python2并存)
2017/06/05 Python
完美解决Python 2.7不能正常使用pip install的问题
2018/06/12 Python
python生成密码字典的方法
2018/07/06 Python
python networkx 根据图的权重画图实现
2019/07/10 Python
python实现简单聊天室功能 可以私聊
2019/07/12 Python
Python多个装饰器的调用顺序实例解析
2020/05/22 Python
树莓派升级python的具体步骤
2020/07/05 Python
html5使用canvas压缩图片的示例代码
2018/09/11 HTML / CSS
Brora官网:英国领先的羊绒服装品牌
2019/08/28 全球购物
销售经理工作职责范文
2013/12/03 职场文书
超市活动计划书
2014/04/24 职场文书
岗位说明书范文
2014/05/07 职场文书
招商引资工作汇报材料
2014/10/28 职场文书
2015年出纳年终工作总结
2015/05/14 职场文书
会议营销主持词
2015/07/03 职场文书
《黄山奇石》教学反思
2016/02/18 职场文书
详细聊聊Oracle表碎片对性能有多大的影响
2022/03/19 Oracle
详解Spring Bean的配置方式与实例化
2022/06/10 Java/Android