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