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
| # Main
#=====
class RunMultiProc(object) :
def __init__(self, nb, multi):
self.nb = nb
self.multi = multi
def push_in_array2(self,array,i,j,val):
print 'push %s in [%s,%s]' %(val,i,j)
array[i,j] = val
def push_in_array(self,array,i,val):
print 'push %s in %s' %(val,i)
n = 9999
while n > 0:
r = sqrt(n)
n = n-1
array[i] = val
for n in range(5):
self.push_in_array2(array,i,n, n)
def Run(self) :
manager = Manager()
d = manager.dict()
t0 = time()
if self.multi:
# Multiprocessing Mode
print "Multiprocessing computation..."
p = {}
for i in range(self.nb):
p[i] = Process(target = self.push_in_array, args=(d,i,5,))
p[i].start()
for i in range(self.nb):
p[i].join()
tp = round(time() - t0, 3)
print "Time elapsed in multiprocessing computation: %.2f\n" % tp
else:
# Serial Mode
print "Serial computation..."
for i in range(self.nb):
push_in_array(d,i,5)
tp = round(time() - t0, 3)
print "Time elapsed in serial computation: %.2f\n" % tp
print d
if __name__ == "__main__":
multi = False
if len(sys.argv) > 1:
if sys.argv[1] == 'Multi' or sys.argv[1] == 'multi':
multi = True
# Init environment
nbProc = 5
run = RunMultiProc( nbProc, multi )
run.Run()
# Compare
#print "Speed-up: %sx \n" % round(ts/tp, 2)
# Exit
sys.exit(0)
# End
#==== |
Partager