python多进程共享变量


Posted in Python onApril 06, 2016

本文实例为大家分享了python多进程共享变量的相关代码,供大家参考,具体内容如下

from multiprocessing import Process, Manager
import os
import time
 
 
class MulFun():
 
  def __init__(self):
    self.a = [1,2,3,4,5]
    self.b = 0
    self.c = {}
    self.s = "hello world"
    self.radius = Manager().dict()
    self.radius['a'] = self.a
    self.radius['b'] = self.b
    self.radius['c'] = self.c
    self.radius['s'] = self.s
 
 
  def func1(self):
    self.b = self.radius['b']
    for i in range(10):
      self.b += i
      self.radius['b'] = self.b
      time.sleep(0.5)
      print '1: ', self.radius['b'],':', self.radius['c'], os.getpid()
 
 
  def func2(self):
    self.c = self.radius['c']
    for i in ['ab', 'bc', 'cd', 'df', 'fg']:
      self.c[i] = i + i
      self.radius['c'] = self.c
      time.sleep(0.5)
      print '2:  ', self.radius['b'],':', self.radius['c'], os.getpid()
 
  def run(self):
    process1 = Process(target=self.func1, args=())
    process2 = Process(target=self.func2, args=())
    process1.daemon = True
    process2.daemon = True
    process1.start()
    process2.start()
    process1.join()
    process2.join()
 
 
class MulSun1:
 
  def __init__(self, radius):
    self.radius = radius
    self.a = radius['a']
    self.s = radius['s']
 
  def process(self):
 
    for i, j in enumerate(self.a):
      #self.a[i] = j * 2
      #self.radius['a'] = self.a
      time.sleep(0.5)
      print '1: ', self.radius['a'], ' & ', self.radius['s']
 
 
class MulSun2:
 
  def __init__(self, radius):
    self.radius = radius
    self.a = radius['a']
    self.s = radius['s']
 
  def process(self):
 
    for i in range(10):
      self.s = self.s + ':% s' %i
      if i < len(self.a):
        self.a[i] += i
      else:
        self.a.append(i + i)
      self.radius['s'] = self.s
      self.radius['a'] = self.a
      time.sleep(0.5)
      print '2: ', self.radius['a'], ' & ', self.radius['s']
 
if __name__ == '__main__':
  aa = MulFun()
  s1 = MulSun1(aa.radius)
  s2 = MulSun2(aa.radius)
  process1 = Process(target=s1.process, args=())
  process2 = Process(target=s2.process, args=())
  process1.daemon = True
  process2.daemon = True
  process1.start()
  process2.start()
  process1.join()
  process2.join()
  print "------------------------"
  print 'process id:', os.getpid()
  print 'done'
  print aa.radius['a'], ' & ', aa.radius['s']

以上就是本文的全部内容,希望对大家学习python程序设计有所帮助。

Python 相关文章推荐
Python 分析Nginx访问日志并保存到MySQL数据库实例
Mar 13 Python
python实现数通设备tftp备份配置文件示例
Apr 02 Python
Python使用urllib2模块实现断点续传下载的方法
Jun 17 Python
Python 实现 贪吃蛇大作战 代码分享
Sep 07 Python
Python实现数据库并行读取和写入实例
Jun 09 Python
python中模块的__all__属性详解
Oct 26 Python
python使用folium库绘制地图点击框
Sep 21 Python
浅析pandas 数据结构中的DataFrame
Oct 12 Python
python基于celery实现异步任务周期任务定时任务
Dec 30 Python
解决django中form表单设置action后无法回到原页面的问题
Mar 13 Python
Python任务调度利器之APScheduler详解
Apr 02 Python
Python基于os.environ从windows获取环境变量
Jun 09 Python
python socket多线程通讯实例分析(聊天室)
Apr 06 #Python
python文件的md5加密方法
Apr 06 #Python
python制作爬虫并将抓取结果保存到excel中
Apr 06 #Python
python基于隐马尔可夫模型实现中文拼音输入
Apr 01 #Python
Python使用BeautifulSoup库解析HTML基本使用教程
Mar 31 #Python
Python使用Mechanize模块编写爬虫的要点解析
Mar 31 #Python
Python语言实现获取主机名根据端口杀死进程
Mar 31 #Python
You might like
php Static关键字实用方法
2010/06/04 PHP
利用js跨页面保存变量做菜单的方法
2008/01/17 Javascript
基于jQuery实现表格数据的动态添加与统计的代码
2011/01/31 Javascript
js css后面所带参数含义介绍
2013/08/18 Javascript
JS对象与json字符串格式转换实例
2014/10/28 Javascript
jQuery打字效果实现方法(附demo源码下载)
2015/12/18 Javascript
Bootstrap每天必学之按钮(Button)插件
2016/04/25 Javascript
微信小程序中使元素占满整个屏幕高度实现方法
2016/12/14 Javascript
requirejs + vue 项目搭建详解
2017/06/16 Javascript
详解vue-cli中配置sass
2017/06/21 Javascript
jquery+css实现简单的图片轮播效果
2017/08/07 jQuery
vue2.0实现前端星星评分功能组件实例代码
2018/02/12 Javascript
jQuery实现的简单歌词滚动功能示例
2019/01/07 jQuery
JavaScript适配器模式原理与用法实例详解
2020/03/09 Javascript
[08:08]2014DOTA2国际邀请赛中国区预选赛精彩TOPPLAY
2014/06/25 DOTA
Python中list列表的一些进阶使用方法介绍
2015/08/15 Python
Python正则抓取新闻标题和链接的方法示例
2017/04/24 Python
Django+JS 实现点击头像即可更改头像的方法示例
2018/12/26 Python
pandas数据筛选和csv操作的实现方法
2019/07/02 Python
Python 正则表达式爬虫使用案例解析
2019/09/23 Python
Python多线程thread及模块使用实例
2020/04/28 Python
Keras Convolution1D与Convolution2D区别说明
2020/05/22 Python
Html5移动端div固定到底部实现底部导航条的几种方式
2021/03/09 HTML / CSS
ALEX AND ANI:手镯,项链,耳环和更多
2017/04/20 全球购物
匡威爱尔兰官网:Converse爱尔兰
2019/06/09 全球购物
英国DIY和家居装饰领域的主要品牌:Wickes
2019/11/26 全球购物
就业协议书范本
2014/04/11 职场文书
合同意向书范本
2014/07/30 职场文书
《改造我们的学习》心得体会
2014/11/07 职场文书
初中生散播谣言检讨书
2014/11/17 职场文书
鸡毛信观后感
2015/06/11 职场文书
投诉信范文
2015/07/02 职场文书
python爬虫之selenium库的安装及使用教程
2021/05/23 Python
MongoDB安装使用并实现Python操作数据库
2021/06/28 MongoDB
vue cli4中mockjs在dev环境和build环境的配置详情
2022/04/06 Vue.js
Java字符缓冲流BufferedWriter
2022/04/09 Java/Android