"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > Cómo compartir bloqueos entre procesos de Python

Cómo compartir bloqueos entre procesos de Python

Publicado el 2024-11-08
Navegar:776

How to Share Locks Between Python Processes

Compartir bloqueos entre procesos de Python

Al intentar utilizar un bloqueo entre múltiples procesos, es posible que encuentre el error "Bloquear objetos solo debe compartirse entre procesos a través de la herencia."

Para resolver esto, hay dos enfoques principales:

Usar un Manager

Este enfoque implica crear un objeto Manager y pasar un Manager.Lock():

from multiprocessing import Manager
...
m = Manager()
l = m.Lock()

Sin embargo, el uso de un administrador introduce la necesidad de un proceso adicional para alojar el servidor del administrador y comunicarse a través de IPC.

Pasar el bloqueo en el grupo Creación

Un método alternativo es pasar el multiprocesamiento normal.Lock() en el momento de la creación del grupo usando el argumento de palabra clave inicializador:

def init(l):
    global lock
    lock = l

l = multiprocessing.Lock()
pool = multiprocessing.Pool(initializer=init, initargs=(l,))

Este método hace que la instancia de bloqueo sea global en todos los trabajadores secundarios. Tenga en cuenta que este enfoque elimina la necesidad de la función parcial.

Al emplear una de estas técnicas, puede compartir bloqueos de manera efectiva entre procesos de Python, lo que permite el acceso coordinado a recursos compartidos.

Declaración de liberación Este artículo se reimprime en: 1729132333 Si hay alguna infracción, comuníquese con [email protected] para eliminarla.
Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3