Serialización robusta en Python: Diferencias entre Pickle y Cloudpickle

En el ecosistema de Python, la serialización es un proceso fundamental para la persistencia de datos y la comunicación en sistemas distribuidos. Mientras que el módulo estándar pickle es suficiente para tareas locales básicas, antornos de computación distribuida o procesamiento paralelo requieren herramientas más avanzadas como cloudpickle. Ser ...

Publicado el 9-30 18:43

Gestión de Procesos Concurrentes en Python

En entornos de programación concurrente, Python ofrece múltiples enfoques para gestionar procesos. Aunque os.fork() es eficaz en sistemas Unix-like, su uso en Windows requiere alternativas como el módulo multiprocessing. A continuación se detallan implementaciones prácticas. import os print(f"Proceso inicializado con PID: {os.getpid()}&qu ...

Publicado el 9-29 01:50

Conceptos fundamentales sobre procesos en sistemas operativos

Un proceso es la unidad básica de asignación de recursos y planificación en un sistema operativo. Representa la ejecución de un programa, siendo una entidad activa ("viva"), a diferencia del programa que es simplemente código almacenado en disco ("muerto"). Algoritmos de planificación de procesos FIFO (First In First Out): ...

Publicado el 9-27 07:14

Notas de Python: corrutinas y multiproceso

from multiprocessing import Pool, cpu_count import time urls = [1,2,3,4,5,6,7,8] auth = 'auth' def process_url(url, auth): time.sleep(9) print(url, auth) if __name__ == '__main__': # Necesario para evitar la creación recursiva de subprocesos with Pool(processes=max(1, cpu_count() - 1)) as pool: pool.starmap(process_url, ...

Publicado el 9-7 08:07

Gestión de registros en entornos multiproceso con multiprocessing-logging

La biblioteca multiprocessing-logging es una solución de código abierto para Python diseñada para mitigar los problemas de sincronización que surgen al registrar eventos en aplicaciones multiproceso. Su función principal consiste en establecer un canal de comunicación mediante un Handler especializado, que permite enviar los registros generados ...

Publicado el 8-20 12:04

Compartición de Datos, Bloqueo GIL e Hilos en Python

Compartición de Datos from multiprocessing import Process, Lock, Manager def modificar_contador(contador, candado): with candado: contador['valor'] -= 1 if __name__ == '__main__': with Manager() as administrador: candado = Lock() contador_compartido = administrador.dict({'valor': 10}) procesos = [] ...

Publicado el 6-25 19:05