preloader

1. Januar 1 | 3 minuten lesen
Inhaltsverzeichnis

32.6 Condiciones de Python Las condiciones se pueden usar para sincronizar la interacción entre dos o más subprocesos o Procesos. Los objetos de condiciones admiten el concepto de un modelo de notificación; ideal para un recurso de datos compartido al que acceden múltiples consumidores y productores. Se puede usar una condición para notificar uno o todos los subprocesos en espera o Procesos que pueden realizar (por ejemplo, para leer datos de un recurso compartido). Los métodos disponibles que soportan esto son: • notificar () notifica un hilo en espera que luego puede continuar • notificar_todos() notifica a todos los subprocesos en espera que pueden continuar • wait() hace que un subproceso espere hasta que se notifique que puede continuar Una condición siempre está asociada con un bloqueo interno que debe ser adquirido y liberado antes de que se puedan llamar los métodos wait() y notificar(). La Condición es compatible con el Protocolo de Administrador de Contexto y, por lo tanto, puede ser se usa a través de una declaración with (que es la forma más típica de usar una Condición) para obtener este candado. Por ejemplo, para obtener la condición de bloqueo y llamar al método de espera podríamos escribir: con condición: condición.esperar() print(‘Ahora podemos continuar’) El objeto de condición se usa en el siguiente ejemplo para ilustrar cómo un productor El subproceso y dos subprocesos de consumo pueden cooperar. Una clase DataResource ha sido definido que contendrá un elemento de datos que se compartirá entre un consumidor y un conjunto de productores. También (internamente) define un atributo de condición. Tenga en cuenta que esto significa que la Condición está completamente internalizada en la clase DataResource; código externo no necesita saber, o preocuparse por, la Condición y su usar. En cambio, el código externo puede simplemente llamar al consumidor () y al productor () funciones en subprocesos separados según sea necesario. El método consumidor () usa una declaración with para obtener el bloqueo (interno) en el objeto Condición antes de esperar a que se le notifique que los datos están disponibles. En a su vez, el método Producer() también usa una declaración with para obtener un bloqueo en el objeto de condición antes de generar el valor del atributo de datos y luego notificar cualquier cosa esperando con la condición de que puedan proceder. Tenga en cuenta que aunque el el método consumidor obtiene un bloqueo en el objeto de condición; si tiene que esperar lo hará liberar el candado y recuperar el candado una vez notificado que puede continuar. Esto es una sutileza que a menudo se pasa por alto. 386 32 Sincronización entre subprocesos/procesos

comments powered by Disqus

popular post

Temas de Pregrado en Ciencias de la Computación Guía avanzada a Python 3 Programación Juan caza

Weiterlesen

Temas de Pregrado en Ciencias de la Computación Guía avanzada a Python 3 Programación Juan caza

Weiterlesen

• https://docs.python.org/3/ El sitio principal de documentación de Python 3. Contiene tutoriales, referencias de bibliotecas, guías de configuración e instalación, así como Python cómo-tos • https://docs.

Weiterlesen