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批量重命名同一文件夹下文件的方法
May 25 Python
python常用函数详解
Sep 13 Python
matplotlib实现区域颜色填充
Mar 18 Python
python numpy存取文件的方式
Apr 01 Python
python对验证码降噪的实现示例代码
Nov 12 Python
pytorch载入预训练模型后,实现训练指定层
Jan 06 Python
Python for循环通过序列索引迭代过程解析
Feb 07 Python
浅谈Pytorch中的自动求导函数backward()所需参数的含义
Feb 29 Python
解决Django no such table: django_session的问题
Apr 07 Python
使用Python FastAPI构建Web服务的实现
Jun 08 Python
互斥锁解决 Python 中多线程共享全局变量的问题(推荐)
Sep 28 Python
总结三种用 Python 作为小程序后端的方式
May 02 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 版本]
2007/03/20 PHP
PHP把JPEG图片转换成Progressive JPEG的方法
2014/06/30 PHP
php获取Google机器人访问足迹的方法
2015/04/15 PHP
php实现粘贴截图并完成上传功能
2015/05/17 PHP
php递归函数怎么用才有效
2018/02/24 PHP
YII2框架中actions的作用与使用方法示例
2020/03/13 PHP
瀑布流布局并自动加载实现代码
2013/03/12 Javascript
XMLHttpRequest处理xml格式的返回数据(示例代码)
2013/11/21 Javascript
深入浅析AngularJS和DataModel
2016/02/16 Javascript
老生常谈JavaScript数组的用法
2016/06/10 Javascript
JavaScript中清空数组的方法总结
2016/12/02 Javascript
微信小程序微信支付接入开发实例详解
2017/04/12 Javascript
Bootstrap模态框插入视频的实现代码
2017/06/25 Javascript
angular 实现的输入框数字千分位及保留几位小数点功能示例
2018/06/19 Javascript
AngularJs1.x自定义指令独立作用域的函数传入参数方法
2018/10/09 Javascript
js实现的格式化数字和金额功能简单示例
2019/07/30 Javascript
微信小程序实现手指拖动选项排序
2020/04/22 Javascript
vue a标签点击实现赋值方式
2020/09/07 Javascript
[03:52]DOTA2英雄基础教程 酒仙
2013/12/23 DOTA
采用Psyco实现python执行速度提高到与编译语言一样的水平
2014/10/11 Python
python通过正则查找微博@(at)用户的方法
2015/03/13 Python
Python中尝试多线程编程的一个简明例子
2015/04/07 Python
Python开发之快速搭建自动回复微信公众号功能
2016/04/22 Python
Python引用传值概念与用法实例小结
2017/10/07 Python
Python并发:多线程与多进程的详解
2019/01/24 Python
Python实现计算文件MD5和SHA1的方法示例
2019/06/11 Python
Window版下在Jupyter中编写TensorFlow的环境搭建
2020/04/10 Python
Python3实现个位数字和十位数字对调, 其乘积不变
2020/05/03 Python
python 如何使用find和find_all爬虫、找文本的实现
2020/10/16 Python
基于Django快速集成Echarts代码示例
2020/12/01 Python
python中threading和queue库实现多线程编程
2021/02/06 Python
企业宣传方案
2014/03/04 职场文书
秋冬农业生产标语
2014/10/09 职场文书
学习保证书
2015/01/17 职场文书
2015迎新晚会开场白
2015/07/17 职场文书
市直属机关2016年主题党日活动总结
2016/04/05 职场文书