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 自动化将markdown文件转成html文件的方法
Sep 23 Python
Python中的pygal安装和绘制直方图代码分享
Dec 08 Python
用python统计代码行的示例(包括空行和注释)
Jul 24 Python
python读取文本中的坐标方法
Oct 14 Python
pandas 将索引值相加的方法
Nov 15 Python
Python代码实现删除一个list里面重复元素的方法
Apr 02 Python
Python常用数据类型之间的转换总结
Sep 06 Python
Python环境Pillow( PIL )图像处理工具使用解析
Sep 12 Python
Django框架模板用法入门教程
Nov 04 Python
Django 解决model 反向引用中的related_name问题
May 19 Python
如何利用Matlab制作一款真正的拼图小游戏
May 11 Python
Python中tqdm的使用和例子
Sep 23 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获取Google AJAX Search API 数据的代码
2010/03/12 PHP
PHPAnalysis中文分词类详解
2014/06/13 PHP
PHP中的多行字符串传递给JavaScript的两种方法
2014/06/19 PHP
golang 调用 php7详解及实例
2017/01/04 PHP
javascript call和apply方法
2008/11/24 Javascript
jQuery 动画基础教程
2008/12/25 Javascript
JavaScript入门教程(5) js Screen屏幕对象
2009/01/31 Javascript
BAT及各大互联网公司2014前端笔试面试题--JavaScript篇
2014/10/29 Javascript
jquery实现清新实用的网页菜单效果
2015/08/28 Javascript
Knockoutjs 学习系列(二)花式捆绑
2016/06/07 Javascript
AngularJS实现在ng-Options加上index的解决方法
2016/11/03 Javascript
nodejs个人博客开发第五步 分配数据
2017/04/12 NodeJs
Vuex入门到上手教程
2018/06/20 Javascript
vue实现键盘输入支付密码功能
2018/08/18 Javascript
在vue中更换字体,本地存储字体非引用在线字体库的方法
2018/09/28 Javascript
使用vue制作滑动标签
2019/09/21 Javascript
python根据文件大小打log日志
2014/10/09 Python
Python编程中使用Pillow来处理图像的基础教程
2015/11/20 Python
python中字符串内置函数的用法总结
2018/09/13 Python
Python弹出输入框并获取输入值的实例
2019/06/18 Python
基于Python爬虫采集天气网实时信息
2020/06/05 Python
PyCharm中配置PySide2的图文教程
2020/06/18 Python
HTML5拖拽功能实现的拼图游戏
2018/07/31 HTML / CSS
施华洛世奇日本官网:SWAROVSKI日本
2018/05/04 全球购物
PREMIUM-MALL法国:行李、箱包及配件在线
2019/05/30 全球购物
Keds加拿大官网:购买帆布运动鞋和皮鞋
2019/09/26 全球购物
MYSQL相比于其他数据库有哪些特点
2013/07/19 面试题
大型活动策划方案
2014/01/12 职场文书
2014年开学第一课活动方案
2014/03/06 职场文书
在校大学生的职业生涯规划书
2014/03/14 职场文书
捐助贫困学生倡议书
2014/05/16 职场文书
2014年教师节红领巾广播稿
2014/09/10 职场文书
党员查摆剖析材料
2014/10/10 职场文书
评先进个人材料
2014/12/29 职场文书
创业不要错过,这4种餐饮新模式
2019/07/18 职场文书
Golang 使用Map实现去重与set的功能操作
2021/04/29 Golang