richigarza

Multiplicacion de Matriz en Paralelo Python

Mar 1st, 2013
178
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.46 KB | None | 0 0
  1. #!/usr/bin/python
  2. import time
  3. import os
  4. from random import randint
  5. from threading import Thread
  6.  
  7. inicio = time.time()
  8. n = 3
  9. # PARA HACER Numeros aleatorios
  10. # matrix = [[randint(0,3) for fila in range(n)] for col in range(n)]
  11. matrix1 = [[1, 2, 3], [3, 4, 5], [3, 2, 1]]
  12. matrix2 = [[2, 3, 4], [5, 5, 5], [1, 1, 1]]
  13. matrix3 = [[0 for fila in range(n)] for col in range(n)]
  14.  
  15.  
  16. class Hilo(Thread):
  17.     def __init__(self, matrix1, matrix2, matrix3, n, x, y):
  18.         Thread.__init__(self)
  19.         self.matrix1 = matrix1
  20.         self.matrix2 = matrix2
  21.         self.matrix3 = matrix3
  22.         self.n = n
  23.         self.x = x
  24.         self.y = y
  25.    
  26.     def run(self):
  27.         global x, y
  28.         for i in range(n):
  29.             matrix3[x][y] += matrix1[self.x][i]*matrix2[i][self.y]
  30.    
  31. def main():
  32.     os.system("clear")
  33.     print "\n", matrix1[0], "\n", matrix1[1], "\n", matrix1[2]
  34.     print "\n", matrix2[0], "\n", matrix2[1], "\n", matrix2[2]
  35.     matrix3 = multiplicar(matrix1,matrix2,n)
  36.     print "\n", matrix3[0], "\n", matrix3[1], "\n", matrix3[2]
  37.     fin = time.time()
  38.     tiempo = fin - inicio
  39.     print "\nTiempo de ejecucion: ", tiempo
  40.    
  41. def multiplicar(matrix1, matrix2, n):
  42.     global x, y
  43.     hilo = list()
  44.    
  45.     for x in range(n):
  46.         for y in range(n):
  47.             hilo.append(Hilo(matrix1, matrix2, matrix3, n, x, y))
  48.             hilo[-1].start()
  49.  
  50.     for h in hilo:
  51.         h.join()
  52.        
  53.     return matrix3
  54.    
  55. main()
Advertisement
Add Comment
Please, Sign In to add comment