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 28 Python
pycharm+django创建一个搜索网页实例代码
Jan 24 Python
利用PyCharm Profile分析异步爬虫效率详解
May 08 Python
基于python-opencv3的图像显示和保存操作
Jun 27 Python
用Python实现最速下降法求极值的方法
Jul 10 Python
基于python traceback实现异常的获取与处理
Dec 13 Python
python中的线程threading.Thread()使用详解
Dec 17 Python
pyftplib中文乱码问题解决方案
Jan 11 Python
python GUI库图形界面开发之PyQt5表格控件QTableView详细使用方法与实例
Mar 01 Python
深入了解Python 方法之类方法 &amp; 静态方法
Aug 17 Python
python中xlutils库用法浅析
Dec 29 Python
浅谈Python中对象是如何被调用的
Apr 06 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 5昨天隆重推出--PHP 5/Zend Engine 2.0新特性
2006/10/09 PHP
PHP面向对象教程之自定义类
2014/06/10 PHP
PHP实现CSV文件的导入和导出类
2015/03/24 PHP
深入理解PHP内核(二)之SAPI探究
2015/11/10 PHP
CodeIgniter记录错误日志的方法全面总结
2016/05/17 PHP
深入理解php printf() 输出格式化的字符串
2016/05/23 PHP
详解php反序列化
2020/06/10 PHP
js 弹出框 替代浏览器的弹出框
2010/10/29 Javascript
javascript内置对象操作详解
2015/02/04 Javascript
jQuery+jRange实现滑动选取数值范围特效
2015/03/14 Javascript
JavaScript实现同时调用多个函数的方法
2015/11/09 Javascript
后端接收不到AngularJs中$http.post发送的数据原因分析及解决办法
2016/07/05 Javascript
js实现简易垂直滚动条
2017/02/22 Javascript
解决jQuery ajax动态新增节点无法触发点击事件的问题
2017/05/24 jQuery
微信小程序配置服务器提示验证token失败的解决方法
2019/04/03 Javascript
JS模拟浏览器实现全局搜索功能
2019/09/11 Javascript
vue数据响应式原理知识点总结
2020/02/16 Javascript
[45:56]Ti4正赛第一天 VG vs NEWBEE 3
2014/07/19 DOTA
python3调用R的示例代码
2018/02/23 Python
python 函数内部修改外部变量的方法
2018/12/18 Python
通过shell+python实现企业微信预警
2019/03/07 Python
Python高级编程之消息队列(Queue)与进程池(Pool)实例详解
2019/11/01 Python
Python Lambda函数使用总结详解
2019/12/11 Python
python实现微信打飞机游戏
2020/03/24 Python
详解向scrapy中的spider传递参数的几种方法(2种)
2020/09/28 Python
python动态规划算法实例详解
2020/11/22 Python
python3 kubernetes api的使用示例
2021/01/12 Python
介绍一下#error预处理
2015/09/25 面试题
AJAX应用和传统Web应用有什么不同
2013/08/24 面试题
Java的类与C++的类有什么不同
2014/01/18 面试题
最新的互联网创业计划书
2014/01/10 职场文书
医德医风演讲稿
2014/05/20 职场文书
培训科主任岗位职责
2014/08/08 职场文书
校长创先争优承诺书
2014/08/30 职场文书
商务邀请函
2015/01/30 职场文书
十大最强水系宝可梦,最美宝可梦排第三,榜首大家最熟悉
2022/03/18 日漫