Blocco mutex

classe finale pubblica MutexLock

Blocca una risorsa mutex. L'uscita è la serratura. Finché il tensore del blocco

è vivo, qualsiasi altra richiesta di utilizzare "MutexLock" con questo mutex attenderà.

Ciò è particolarmente utile per creare una sezione critica se utilizzato insieme a `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)
 
Mentre `fn` è in esecuzione nella sezione critica, nessun'altra funzione che desidera utilizzare questa sezione critica può essere eseguita.

Spesso il caso d'uso è che due esecuzioni dello stesso grafico, in parallelo, desiderano eseguire `fn`; e desideriamo garantire che solo uno di essi venga eseguito alla volta. Ciò è particolarmente importante se "fn" modifica una o più variabili alla volta.

È utile anche se due funzioni separate devono condividere una risorsa, ma vogliamo garantire che l'utilizzo sia esclusivo.

Metodi pubblici

Uscita <Oggetto>
comeuscita ()
Restituisce la maniglia simbolica di un tensore.
MutexLock statico
create ( ambito ambito , operando <?> mutex)
Metodo factory per creare una classe che racchiude una nuova operazione MutexLock.
Uscita <?>
mutexLock ()
Un tensore che mantiene un puntatore condiviso a un blocco sul mutex; quando il Tensore viene distrutto, il conteggio degli utilizzi sul puntatore condiviso diminuisce di 1.

Metodi ereditati

Metodi pubblici

output pubblico <Oggetto> asOutput ()

Restituisce la maniglia simbolica di un tensore.

Gli input per le operazioni TensorFlow sono output di un'altra operazione TensorFlow. Questo metodo viene utilizzato per ottenere un handle simbolico che rappresenta il calcolo dell'input.

creazione MutexLock statico pubblico (ambito ambito , operando <?> mutex)

Metodo factory per creare una classe che racchiude una nuova operazione MutexLock.

Parametri
scopo ambito attuale
mutex La risorsa mutex da bloccare.
ritorna
  • una nuova istanza di MutexLock

Uscita pubblica <?> mutexLock ()

Un tensore che mantiene un puntatore condiviso a un blocco sul mutex; quando il Tensore viene distrutto, il conteggio degli utilizzi sul puntatore condiviso diminuisce di 1. Quando raggiunge 0, il blocco viene rilasciato.