Λοιπόν 'εχω συντάξει το εξής πρόγραμμα που δημιουργεί τυχαίους πίνακες διαστάσεων που επιλέγει ο χρήστης και εμφανίζει το γινομενό τους.
Αποφάσισα για να μην καθυστερεί το πρόγραμμα με πράξεις πινάκων μεγάλων διαστάσεων (π.χ. 1000x10000 κ.λ.π.) να ενσωματώσω εντολές της βιβλιοθήκης multiprocessing σε αυτό.Χρησιμοποίησα κυρίως τις εντολές pool και map.
Τα αποτελέσματα όμως δεν ήταν τα αναμενόμενα αφού με την multiprocessing καθυστερούσε περισσότερο!
# -*- coding: cp1253 -*-
#MHN BALETE PRAKSEIS POY DEN ORIZONTAI
#oi pinakes poy ftiaxnei auto to programma einai oysiastika listes poy kathe stoixeio toys
#einai mia grammh toy pinaka
#p.x. o A=[[2,3,3,4],[5,7,6,8],[1,0,3,7]] eiani enas pinakas 3*4
from random import *
import time
def tp(grammes,sthles):#dhmiourgia tyxaioy pinaka,pairnw ws orismata tis diastaseis toy
L=[]
for i in range(grammes):
L.append([])
for i in range(grammes):
for j in range(sthles):
L[i].append(randint(0,5))
return L#epistrefei enan tyxaio pinaka
def gin(A,L,gr1,st1,gr2,st2):#ginomeno pinakwn,orismata:oi pinakes kai oi diastaseis tous
#gr1,st1:oi grammes kai sthles toy A & gr2,st2 oi grammes kai oi sthles toy B
B=[]
for i in range(st2):
B.append([])
for i in range(st2):
for j in range(gr2):
B[i].append(L[j][i])
V=[]
for i in range(gr1):
V.append([])
for k in range(gr1):
for i in range(st2):
s=0
for j in range(st1):
s=s+A[k][j]*B[i][j]
V[k].append(s)
return V
#ektypwsh kathe pinaka,yparxei eidikh synarthsh gia thn ektypwsh gia na mhn ektypwnontai oi #pinakes ws listes
#alla me thn synhthismenh morfh twn pinakwn
def ektypwsh(A,gr,st):
for j in range(int(gr)):
s=""
for i in range(int(st)):
s=s+str(A[j][i])+" "
print s#typwnei kathe grammh toy pinaka ksexwrista
gr1=input("Δώσε τις γραμμές του 1ου πίνακα:")
st1=input("Δώσε τις στήλες του 1ου πίνακα:")
gr2=input("Δώσε τις γραμμές του 2ου πίνακα:")
st2=input("Δώσε τις στήλες του 2ου πίνακα:")
start_time=time.clock()#ksekinaei na metraei to xrono apo thn stimh pou dothikan oi diastaseis
D=tp(gr1,st1)
N=tp(gr2,st2)
C=gin(D,N,gr1,st1,gr2,st2)
print "Ο 1ος πίνακας είναι ο εξής:"
ektypwsh(D,gr1,st1)
print "Ο 2ος πίνακας είναι ο εξής:"
ektypwsh(N,gr2,st2)
print "Το γινόμενο των 2 πινάκων είναι:"
ektypwsh(C,gr1,st2)
print time.clock()-start_time,"seconds"#emfanizei to xrono>>
μπορεί κάποιος να εξηγήσει πως πρέπει να είναι ο κώδικας για να τρέξει το παραπάνω πρόγραμμα με multiprocessing