- 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']
- #该片段来自于http://www.codesnippet.cn/detail/1810201615098.html
来源: http://www.codesnippet.cn/detail/1810201615098.html