8 - Multiprocessing.ipynb#
Librería Multiprocessing de Python#
La librería Multiprocessing de Python es una biblioteca estándar que permite la creación de procesos en paralelo en una computadora con múltiples núcleos o CPUs. Proporciona una interfaz de programación para crear y administrar procesos de manera fácil y eficiente, lo que permite acelerar la ejecución de programas que realizan tareas intensivas en cómputo.
8 - ¿Cómo sincronizar procesos? - Ejecutar Python File#
La sincronización de procesos se puede lograr utilizando:
la clase Barrier de la librería multiprocessing.
la clase Lock de la librería multiprocessing.
import multiprocessing
from multiprocessing import Barrier, Lock, Process
from time import time
from datetime import datetime
def test_with_barrier(synchronizer, serializer):
name = multiprocessing.current_process().name
synchronizer.wait()
now = time()
with serializer:
print("Proceso %s ----> %s \n" %(name,datetime.fromtimestamp(now)))
#serializer.acquire()
#print("Proceso %s ----> %s" %(name,datetime.fromtimestamp(now)))
#serializer.release()
def test_without_barrier():
name = multiprocessing.current_process().name
now = time()
print("Proceso %s ----> %s \n" %(name ,datetime.fromtimestamp(now)))
if __name__ == '__main__':
synchronizer = Barrier(2)
serializer = Lock()
Process(name='p1 - prueba_con_barrera',target=test_with_barrier,args=(synchronizer,serializer)).start()
Process(name='p2 - prueba_con_barrera',target=test_with_barrier,args=(synchronizer,serializer)).start()
Process(name='p3 - prueba_sin_barrera',target=test_without_barrier).start()
Process(name='p4 - prueba_sin_barrera',target=test_without_barrier).start()
Proceso p1 - prueba_con_barrera ----> 2023-05-07 16:41:32.844288
Proceso p2 - prueba_con_barrera ----> 2023-05-07 16:41:32.846685
Proceso p3 - prueba_sin_barrera ----> 2023-05-07 16:41:32.854381
Proceso p4 - prueba_sin_barrera ----> 2023-05-07 16:41:32.872981