Trabajando con Procesos
Desliza para mostrar el menú
El módulo multiprocessing de Python permite lograr paralelismo real creando procesos independientes, cada uno con su propio intérprete de Python y espacio de memoria. A diferencia de los hilos, que comparten memoria y se ejecutan en el mismo proceso, los procesos están completamente aislados entre sí. Este aislamiento evita la limitación del Global Interpreter Lock (GIL), permitiendo que varios núcleos de CPU trabajen en paralelo en tareas intensivas para la CPU. Después de ver el video anterior, se debe comprender que el paralelismo basado en procesos es especialmente útil cuando se necesita realizar cálculos pesados o aprovechar varios núcleos para tareas que, de otro modo, estarían limitadas por el GIL. El módulo multiprocessing proporciona una API familiar similar al módulo threading, lo que facilita alternar entre hilos y procesos según las necesidades.
Utilizar estas clases y funciones para construir aplicaciones paralelas robustas, gestionar el intercambio de datos y coordinar la ejecución de procesos en Python.
123456789101112131415import multiprocessing import time def print_message(message, delay): time.sleep(delay) print(message) process1 = multiprocessing.Process(target=print_message, args=("Process 1 finished", 2)) process2 = multiprocessing.Process(target=print_message, args=("Process 2 finished", 1)) process1.start() process2.start() process1.join() process2.join()
Este ejemplo de código demuestra cómo utilizar el módulo multiprocessing de Python para ejecutar tareas en paralelo creando procesos independientes. El ejemplo utiliza simples retardos de tiempo e imprime mensajes para mostrar cómo los procesos pueden ejecutarse de manera independiente y simultánea.
Conceptos clave ilustrados
-
Creación de procesos:
- Se crean nuevos procesos utilizando la clase
multiprocessing.Process; - A cada proceso se le asigna una función objetivo (
print_message) y los argumentos que se le pasarán a esa función.
- Se crean nuevos procesos utilizando la clase
-
Inicio de procesos:
- El método
start()inicia cada proceso, permitiendo que se ejecuten concurrentemente; - Una vez iniciados, cada proceso ejecuta su función objetivo de forma independiente de los demás.
- El método
-
Ejecución en paralelo:
- Ambos procesos duermen durante diferentes periodos (
2y1segundos) usandotime.sleep(); - Como se ejecutan en paralelo, el proceso con el retardo más corto termina primero, incluso si fue iniciado después del otro.
- Ambos procesos duermen durante diferentes periodos (
-
Unión de procesos:
- El método
join()asegura que el programa principal espere a que ambos procesos finalicen antes de continuar; - Sin
join(), el programa principal podría finalizar antes de que los procesos terminen.
- El método
Este ejemplo muestra que con multiprocessing, las tareas pueden ejecutarse al mismo tiempo en varios núcleos de CPU, lo que lo hace ideal para operaciones intensivas en CPU que se benefician de la ejecución paralela.
¡Gracias por tus comentarios!
Pregunte a AI
Pregunte a AI
Pregunte lo que quiera o pruebe una de las preguntas sugeridas para comenzar nuestra charla