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 help()函数用法详解
Mar 11 Python
python自定义解析简单xml格式文件的方法
May 11 Python
轻量级的Web框架Flask 中模块化应用的实现
Sep 11 Python
python爬虫之BeautifulSoup 使用select方法详解
Oct 23 Python
神经网络理论基础及Python实现详解
Dec 15 Python
Python编程求质数实例代码
Jan 31 Python
Python使用while循环花式打印乘法表
Jan 28 Python
把JSON数据格式转换为Python的类对象方法详解(两种方法)
Jun 04 Python
Python调用jar包方法实现过程解析
Aug 11 Python
Manjaro、pip、conda更换国内源的方法
Nov 17 Python
新手必备Python开发环境搭建教程
May 28 Python
Python可视化神器pyecharts之绘制地理图表练习
Jul 07 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 xfocus防注入资料
2008/04/27 PHP
php miniBB中文乱码问题解决方法
2008/11/25 PHP
php 静态页面中显示动态内容
2009/08/14 PHP
PHP中register_globals参数为OFF和ON的区别(register_globals 使用详解)
2012/02/05 PHP
微信公众平台开发教程②微信端分享功能图文详解
2019/04/10 PHP
Laravel的Auth验证Token验证使用自定义Redis的例子
2019/09/30 PHP
JsEasy简介 JsEasy是什么?与下载
2007/03/07 Javascript
HTML中不支持静态Expando的元素的问题
2007/03/08 Javascript
JS图片预加载 JS实现图片预加载应用
2012/12/03 Javascript
返回页面顶部top按钮通过锚点实现(自写)
2013/08/30 Javascript
JSON序列化与解析原生JS方法且IE6和chrome测试通过
2013/09/05 Javascript
jQuery的live()方法对hover事件的处理示例
2014/02/27 Javascript
浅析JavaScript中浏览器的兼容问题
2016/04/19 Javascript
JSON与XML的区别对比及案例应用
2016/11/11 Javascript
webpack学习笔记之优化缓存、合并、懒加载
2017/08/24 Javascript
Vue动态控制input的disabled属性的方法
2018/06/26 Javascript
JS实现点击li标签弹出对应的索引功能【案例】
2019/02/18 Javascript
点击按钮弹出模态框的一系列操作代码实例
2019/03/29 Javascript
移动端吸顶fixbar的解决方案详解
2019/07/17 Javascript
解决vue-cli 打包后自定义动画未执行的问题
2019/11/12 Javascript
解决antd datepicker 获取时间默认少8个小时的问题
2020/10/29 Javascript
Python sys.path详细介绍
2013/10/17 Python
django 2.0更新的10条注意事项总结
2018/01/05 Python
Pandas实现数据类型转换的一些小技巧汇总
2018/05/07 Python
virtualenv 指定 python 解释器的版本方法
2018/10/25 Python
python打包多类型文件的操作方法
2020/09/21 Python
canvas如何实现多张图片编辑的图片编辑器
2020/03/10 HTML / CSS
先进个人获奖感言
2014/01/24 职场文书
人力资源管理专业自荐书范文
2014/02/10 职场文书
学校安全责任书
2014/04/14 职场文书
秋天的怀念教学反思
2014/04/28 职场文书
早恋主题班会
2015/08/14 职场文书
《牧场之国》教学反思
2016/02/22 职场文书
HTML+VUE分页实现炫酷物联网大屏功能
2021/05/27 Vue.js
python使用pymysql模块操作MySQL
2021/06/16 Python
Java实现扫雷游戏详细代码讲解
2022/05/25 Java/Android