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字符遍历的艺术
Sep 06 Python
简单讲解Python中的闭包
Aug 11 Python
利用python批量给云主机配置安全组的方法教程
Jun 21 Python
Python+tkinter使用80行代码实现一个计算器实例
Jan 16 Python
详解python 注释、变量、类型
Aug 10 Python
python 读写文件包含多种编码格式的解决方式
Dec 20 Python
浅谈python输出列表元素的所有排列形式
Feb 26 Python
使用python计算三角形的斜边例子
Apr 15 Python
Python的Django框架实现数据库查询(不返回QuerySet的方法)
May 19 Python
python连接mysql有哪些方法
Jun 24 Python
python3从网络摄像机解析mjpeg http流的示例
Nov 13 Python
Python使用OpenCV和K-Means聚类对毕业照进行图像分割
Jun 11 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
解析如何修改phpmyadmin中的默认登陆超时时间
2013/06/25 PHP
PHP生成唯一订单号
2015/07/05 PHP
详解WordPress中简码格式标签编写的基本方法
2015/12/22 PHP
支持汉转拼和拼音分词的PHP中文工具类ChineseUtil
2018/02/23 PHP
详解php用static方法的原因
2018/09/12 PHP
学习js在线html(富文本,所见即所得)编辑器
2012/12/18 Javascript
jQuery写的日历(包括日历的样式及功能)
2013/04/23 Javascript
jquery 提交值不为空的元素示例代码
2013/05/10 Javascript
js获取IP和PcName(IE)在vs中可用
2013/08/02 Javascript
Jquery遍历checkbox获取选中项value值的方法
2014/02/13 Javascript
如何书写高质量jQuery代码(使用jquery性能问题)
2014/06/30 Javascript
node.js操作mongodb学习小结
2015/04/25 Javascript
学习JavaScript设计模式(策略模式)
2015/11/26 Javascript
Uploadify上传文件方法
2016/03/16 Javascript
JS+HTML5实现的前端购物车功能插件实例【附demo源码下载】
2016/10/17 Javascript
详解React-Todos入门例子
2016/11/08 Javascript
nodejs redis 发布订阅机制封装实现方法及实例代码
2016/12/15 NodeJs
JS实现向iframe中表单传值的方法
2017/03/24 Javascript
JS打印彩色菱形的实例代码
2018/08/15 Javascript
vue-cli3搭建项目的详细步骤
2018/12/05 Javascript
Nodejs实现的操作MongoDB数据库功能完整示例
2019/02/02 NodeJs
[49:08]OpTic vs Serenity 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/19 DOTA
PHP实现发送和接收JSON请求
2018/06/07 Python
深入了解Django View(视图系统)
2019/07/23 Python
Windows系统Python直接调用C++ DLL的方法
2019/08/01 Python
python实现文法左递归的消除方法
2020/05/22 Python
德国户外装备、登山运动和攀岩商店:tapir store
2020/02/12 全球购物
美团网旗下网上订餐平台:美团外卖
2020/03/05 全球购物
大一军训感言
2014/01/09 职场文书
和谐社区口号
2014/06/19 职场文书
授权委托书范本(单位)
2014/09/28 职场文书
大学感恩节活动策划方案
2014/10/11 职场文书
先进个人申报材料
2014/12/30 职场文书
绿色环保倡议书
2015/04/28 职场文书
农村党员干部承诺书
2015/05/04 职场文书
解决Redis启动警告问题
2022/02/24 Redis