Bloquea un recurso mutex. La salida es la cerradura. Mientras el tensor de bloqueo
está activo, cualquier otra solicitud para usar `MutexLock` con este mutex esperará.
Esto es particularmente útil para crear una sección crítica cuando se usa junto con `MutexLockIdentity`:
mutex = mutex_v2(
shared_name=handle_name, container=container, name=name)
def execute_in_critical_section(fn, *args, **kwargs):
lock = gen_resource_variable_ops.mutex_lock(mutex)
with ops.control_dependencies([lock]):
r = fn(*args, **kwargs)
with ops.control_dependencies(nest.flatten(r)):
with ops.colocate_with(mutex):
ensure_lock_exists = mutex_lock_identity(lock)
# Make sure that if any element of r is accessed, all of
# them are executed together.
r = nest.map_structure(tf.identity, r)
with ops.control_dependencies([ensure_lock_exists]):
return nest.map_structure(tf.identity, r)
Mientras "fn" se ejecuta en la sección crítica, no se pueden ejecutar otras funciones que deseen utilizar esta sección crítica.A menudo, el caso de uso es que dos ejecuciones del mismo gráfico, en paralelo, desean ejecutar `fn`; y deseamos asegurarnos de que solo uno de ellos se ejecute a la vez. Esto es especialmente importante si `fn` modifica una o más variables a la vez.
También es útil si dos funciones separadas deben compartir un recurso, pero deseamos asegurarnos de que el uso sea exclusivo.
Métodos públicos
Salida <Objeto> | como salida () Devuelve el identificador simbólico de un tensor. |
bloqueo mutex estático | |
Salida <?> | bloqueo mutex () Un tensor que mantiene un puntero compartido a un bloqueo en el mutex; cuando se destruye el tensor, el recuento de uso del puntero compartido se reduce en 1. |
Métodos heredados
Métodos públicos
Salida pública <Objeto> comoSalida ()
Devuelve el identificador simbólico de un tensor.
Las entradas a las operaciones de TensorFlow son salidas de otra operación de TensorFlow. Este método se utiliza para obtener un identificador simbólico que representa el cálculo de la entrada.
creación pública estática de MutexLock (alcance alcance , operando <?> mutex)
Método de fábrica para crear una clase que envuelve una nueva operación MutexLock.
Parámetros
alcance | alcance actual |
---|---|
exclusión mutua | El recurso mutex para bloquear. |
Devoluciones
- una nueva instancia de MutexLock
Salida pública <?> mutexLock ()
Un tensor que mantiene un puntero compartido a un bloqueo en el mutex; cuando se destruye el tensor, el recuento de uso del puntero compartido disminuye en 1. Cuando llega a 0, se libera el bloqueo.