首页 > 编程 > Python > 正文

python多进程共享变量

2020-01-04 17:33:59
字体:
来源:转载
供稿:网友
这篇文章主要为大家详细介绍了python多进程共享变量的相关资料,感兴趣的小伙伴们可以参考一下
 

本文实例为大家分享了python多进程共享变量的相关代码,供大家参考,具体内容如下

from multiprocessing import Process, Managerimport osimport 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程序设计有所帮助。


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表