45fan.com - 路饭网

搜索: 您的位置主页 > 网络频道 > 阅读资讯:python多进程共享变量的内容及知识介绍

python多进程共享变量的内容及知识介绍

2016-04-26 19:12:10 来源:www.45fan.com 【

python多进程共享变量的内容及知识介绍

本文实例为大家分享了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程序设计有所帮助。


本文地址:http://www.45fan.com/a/question/47610.html
Tags: python 进程 变量
编辑:路饭网
关于我们 | 联系我们 | 友情链接 | 网站地图 | Sitemap | App | 返回顶部