Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Aprende Trabajando con Procesos | Multithreading vs. Multiprocessing
Programación Estructural en Python

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.

123456789101112131415
import 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.
  • 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.
  • Ejecución en paralelo:

    • Ambos procesos duermen durante diferentes periodos (2 y 1 segundos) usando time.sleep();
    • Como se ejecutan en paralelo, el proceso con el retardo más corto termina primero, incluso si fue iniciado después del otro.
  • 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.

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.

question mark

¿Qué afirmación describe mejor la diferencia entre hilos y procesos en Python?

Selecciona la respuesta correcta

¿Todo estuvo claro?

¿Cómo podemos mejorarlo?

¡Gracias por tus comentarios!

Sección 3. Capítulo 4

Pregunte a AI

expand

Pregunte a AI

ChatGPT

Pregunte lo que quiera o pruebe una de las preguntas sugeridas para comenzar nuestra charla

Sección 3. Capítulo 4
some-alt