Index du contenu
El resultado de una ejecución de ejemplo de este programa es: Principal - Inicio Main - Creando el objeto DataResource DataResource - Inicializar los datos vacíos DataResource: configuración del objeto Condition Main - Crear los subprocesos de consumo Main - Crear el hilo del productor Principal: inicio de subprocesos de consumo DataResource: iniciando el método del consumidor en Consumer1 DataResource: iniciando el método del consumidor en Consumer2 Principal: subproceso de productor inicial DataResource: método de productor inicial DataResource: datos de configuración del productor Principal - Listo DataResource: el productor notifica todos los subprocesos en espera DataResource: el recurso está disponible para Consumer1 DataResource - Datos leídos en Consumer1: 36 DataResource: el recurso está disponible para Consumer2 DataResource - Datos leídos en Consumer2: 36 32.7 Semáforos de Python La clase Python Semaphore implementa el modelo de semáforo de conteo de Dijkstra. En general, un semáforo es como una variable entera, su valor está destinado a representan una serie de recursos disponibles de algún tipo. Normalmente hay dos operaciones disponibles en un semáforo; estas operaciones son adquirir() y re- lease() (aunque en algunas bibliotecas los nombres originales de Dijkstra de p() y v() se utilizan, estos nombres de operaciones se basan en las frases holandesas originales). • La operación adquirir() resta uno del valor del semáforo, a menos que el valor sea 0, en cuyo caso bloquea el subproceso de llamada hasta que el el valor del semáforo aumenta por encima de 0 de nuevo. • La operación signal() suma uno al valor, indicando una nueva instancia de el recurso se ha agregado al grupo. Tanto el threading.Semaphore como el multiprocessing.Semaphore Las clases también admiten el Protocolo de gestión de contexto. Un parámetro opcional usado con el constructor Semaphore da la inicial valor para el contador interno; por defecto es 1. Si el valor dado es menor que 0, Se genera ValueError. El siguiente ejemplo ilustra 5 subprocesos diferentes, todos ejecutando el mismo función trabajador(). La función trabajador() intenta adquirir un semáforo; si lo hace y luego continúa en el bloque de instrucciones with; si no lo hace, espera hasta que puede adquirirlo. Como el semáforo se inicializa a 2, solo puede haber dos hilos que puede adquirir el Semáforo a la vez. 388 32 Sincronización entre subprocesos/procesos
popular post
Temas de Pregrado en Ciencias de la Computación Guía avanzada a Python 3 Programación Juan caza
Lire plusTemas de Pregrado en Ciencias de la Computación Guía avanzada a Python 3 Programación Juan caza
Lire plus• 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.
Lire plus