Práctica 5: Creación y manejo de matrices con hilos
Objetivo: Crear y manejar matrices con hilos.
Desarrollo:
- Crear un programa principal en Python que pregunte por un número (longitud) que será el tamaño de las matrices que se manejarán (las matrices serán cuadradas, de longitud x longitud).
- Crear 3 variables globales (global1, global2 y global3) y asignarles a cada una la temperatura menor posible (-30).
- El programa principal manda a ejecutar a 3 hilos y les envía como parámetro el tamaño de la matriz a procesar (longitud) y el número del hilo que lo va a ejecutar (1, 2 ó 3).
- Cada uno de los hilos ejecuta de manera independiente las siguientes operaciones:
- Toma el tiempo de arranque del hilo
- Genera una matriz cuadrada (matriz) del tamaño del número que recibió (longitud x longitud).
- Al crear la matriz la rellena con números decimales aleatorios entre 0 y 1.
- Después de generada la matríz, la recorre elemento por elemento (i,j), y en cada elemento lo sustituye por una temperatura entre -30 a 60 grados (90 valores posibles con decimales), para lo cual se utiliza la fórmula:
- matriz(i,j) = matriz[i,j] * 90 - 30
- Al recorrer y aisgnar un valor a cada elemento de la matríz, se buscará la temperatura mayor, por lo que si el elemento matriz[i,j] es mayor que la variable global (global1, global2 ó global3 dependiendo del número que lo está ejecutando), entonces global = matriz[i,j], es decir, al final quedará en la variable global la mayor temperatura de todo el arreglo.
- Toma el tiempo final del hilo.
- Imprime el tiempo total de procesamiento y el número del hilo.
- El programa principal deberá esperar a que terminen de ejecutarse los 3 hilos (usando la sentencia hilo.join())
- Una vez que terminaron los 3 hilos, el programa principal deberá comparar e imprimir en pantalla cuál de las 3 variables globales (global1, global2 y global3) es la que tiene almacenada la temperatura mayor y qué hilo lo procesó (1, 2 ó 3).
Material de Apoyo:
Reporte del alumno (resultados):
FECHA DE ENTREGA: Miércoles 6 de mayo (subir a GitHub Classroom - límite: 14:00 horas).
Portal de Tecnología desarrollado por: Rogelio Ferreira Escutia