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 相关文章推荐
wxPython定时器wx.Timer简单应用实例
Jun 03 Python
Python常用内置模块之xml模块(详解)
May 23 Python
Python发送邮件功能示例【使用QQ邮箱】
Dec 04 Python
Python进程间通信Queue消息队列用法分析
May 22 Python
django 邮件发送模块smtp使用详解
Jul 22 Python
python redis连接 有序集合去重的代码
Aug 04 Python
pytorch 批次遍历数据集打印数据的例子
Dec 30 Python
通过python检测字符串的字母
Feb 18 Python
使用PyQt的QLabel组件实现选定目标框功能的方法示例
May 19 Python
利用Python优雅的登录校园网
Oct 21 Python
Python爬虫过程解析之多线程获取小米应用商店数据
Nov 14 Python
python中字符串String及其常见操作指南(方法、函数)
Apr 06 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/10/02 PHP
PHP 第一节 php简介
2012/04/28 PHP
无JS,完全php面向过程数据分页实现代码
2012/08/27 PHP
php简单实现多字节字符串翻转的方法
2015/03/31 PHP
PHP静态延迟绑定和普通静态效率的对比
2017/10/20 PHP
PHP实现的CURL非阻塞调用类
2018/07/26 PHP
javascript编程起步(第二课)
2007/01/10 Javascript
JavaScript 异步调用框架 (Part 2 - 用例设计)
2009/08/03 Javascript
jquery实现心算练习代码
2010/12/06 Javascript
js格式化输入框内金额、银行卡号
2016/02/01 Javascript
js实现千分符和保留几位小数的简单实例
2016/08/01 Javascript
javascript this详细介绍
2016/09/19 Javascript
javascript实现根据汉字获取简拼
2016/09/25 Javascript
js如何判断是否在iframe中及防止网页被别站用iframe嵌套
2017/01/11 Javascript
JQuery实现文字无缝滚动效果示例代码(Marquee插件)
2017/03/07 Javascript
基于webpack 实用配置方法总结
2017/09/28 Javascript
js 中rewrap-ajax.js插件实例代码
2017/10/20 Javascript
JS 实现微信扫一扫功能
2018/09/14 Javascript
vue 实现小程序或商品秒杀倒计时
2019/04/14 Javascript
JavaScript canvas动画实现时钟效果
2020/02/10 Javascript
Vue 实现一个简单的鼠标拖拽滚动效果插件
2020/12/10 Vue.js
vue实现可移动的悬浮按钮
2021/03/04 Vue.js
[06:21]2014DOTA2国际邀请赛 庆祝VG首阶段领跑;B叔为挣牛排半夜整理情报
2014/07/13 DOTA
[02:36]DOTA2上海特锦赛 回忆电竞生涯的重要瞬间
2016/03/25 DOTA
python实现zencart产品数据导入到magento(python导入数据)
2014/04/03 Python
介绍Python中的文档测试模块
2015/04/28 Python
Python的Django应用程序解决AJAX跨域访问问题的方法
2016/05/31 Python
浅析Python中else语句块的使用技巧
2016/06/16 Python
Python input函数使用实例解析
2019/11/22 Python
Python换行与不换行的输出实例
2020/02/19 Python
俄罗斯玩具、儿童用品、儿童服装和鞋子网上商店:MyToys.ru
2019/10/14 全球购物
乐高瑞士官方商店:LEGO CH
2020/08/16 全球购物
2015年妇幼保健工作总结
2015/05/19 职场文书
《七律·长征》教学反思
2016/02/16 职场文书
Golang的继承模拟实例
2021/06/30 Golang
正则表达式拆分url实例代码
2022/02/24 Java/Android