本文实例为大家分享了python多进程共享变量的相关代码,供大家参考,具体内容如下
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
|
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程序设计有所帮助。