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