Índice de contenido
En este diagrama, el Productor se está ejecutando en su propio Hilo (aunque podría también se ejecuta en un proceso separado) y coloca datos en algunos datos compartidos comunes envase. Posteriormente, varios Consumidores independientes pueden consumir ese datos cuando están disponibles y cuando son libres de procesar los datos. Sin embargo, hay No tiene sentido que los consumidores revisen repetidamente el contenedor en busca de datos como ese sería una pérdida de recursos (por ejemplo, en términos de ejecución de código en un procesador y de cambio de contexto entre múltiples subprocesos o procesos). Por lo tanto, necesitamos alguna forma de notificación o sincronización entre el Productor y el Consumidor para manejar esta situación. Python proporciona varias clases en el subproceso (y también en el multi- procesamiento) biblioteca que se puede utilizar para administrar bloques de código críticos. Estos las clases incluyen Bloqueo, Condición y Semáforo. 32.5 Bloqueos de pitón La clase Lock definida (tanto en el threading como en el multiprocesamiento) bibliotecas) proporciona un mecanismo para sincronizar el acceso a un bloque de código. El El objeto de bloqueo puede estar en uno de dos estados bloqueado y desbloqueado (con el estado inicial siendo desbloqueado). El bloqueo otorga acceso a un solo hilo a la vez; otros hilos debe esperar a que el Bloqueo se libere antes de avanzar. La clase Lock proporciona dos métodos básicos para adquirir el bloqueo (acquire()) y liberando (liberar()) la cerradura. • Cuando el estado del objeto Bloquear está desbloqueado, adquirir() cambia el estado a bloqueado y regresa inmediatamente. • Cuando el estado está bloqueado, la adquisición() se bloquea hasta que una llamada a la liberación() en otro hilo lo cambia a desbloqueado, luego la llamada de adquisición () lo restablece a bloqueado y vuelve. • El método release() solo debe llamarse en estado bloqueado; cambia el estado para desbloquear y vuelve inmediatamente. Si se intenta liberar un bloqueo desbloqueado, se generará un RuntimeError. A continuación se muestra un ejemplo del uso de un objeto de bloqueo: 32.4 Sincronización de código concurrente 383
popular post
El modelo AR de series temporales univariadas
Resumen: En esta entrada, descubrirá el modelo AR: El modelo autorregresivo.
Leer másEvaluación de modelos para pronosticar
Resumen: Al desarrollar modelos de aprendizaje automático, generalmente se comparan varios modelos durante la fase de construcción.
Leer másModelos para pronosticar
Resumen: El pronóstico, traducido groseramente como la tarea de predecir el futuro, ha estado presente en la sociedad humana durante siglos.
Leer más