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
| #!/usr/bin/python
# -*-coding:Utf-8 -*
from multiprocessing import Process, Queue
import time
from numpy import *
def mult(A,B):
C=[]
for i in A:
for j in B:
C.append(dot(i,j))
return C
def multl(q,A,B,n):
t = time.clock()
C=[]
for i in A[:n]:
for j in B:
C.append(dot(i,j))
q.put(C)
print("time l",time.clock()-t)
def multr(q,A,B,n):
t=time.clock()
C=[]
for i in A[n:]:
for j in B:
C.append(dot(i,j))
q.put(C)
print("time r",time.clock()-t)
if __name__ == "__main__":
nA=200
nB=200
m=500
t0 = time.clock()
A=[random.rand(m,m) for i in range(nA)]
B=[random.rand(m,1) for i in range(nB)]
print("time 0",time.clock()-t0)
t1 = time.clock()
C1=mult(A,B)
print("time 1",time.clock()-t1)
print("len(C1)",len(C1))
t2=time.clock()
q1=Queue()
q2=Queue()
pl = Process(target=multl, args=(q1,A,B,nA/2))
pr = Process(target=multr, args=(q2,A,B,nA/2))
pl.start()
pr.start()
C21=q1.get()
C22=q2.get()
pl.join()
pr.join()
print("time 2",time.clock()-t2)
print("len(C21)",len(C21))
print("len(C22)",len(C22)) |
Partager