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