當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


Python tf.raw_ops.MutexLock用法及代碼示例


鎖定互斥資源。輸出是鎖。隻要鎖張量

用法

tf.raw_ops.MutexLock(
    mutex, name=None
)

參數

  • mutex Tensor 類型為 resource 。要鎖定的互斥體資源。
  • name 操作的名稱(可選)。

返回

  • Tensor 類型為 variant

是活動的,任何其他使用此互斥體的MutexLock 的請求都將等待。

當與 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)

fn 在臨界區運行時,沒有其他希望使用該臨界區的函數可以運行。

通常用例是同一個圖的兩個並行執行希望運行 fn ;我們希望確保一次隻執行其中一個。如果fn 一次修改一個或多個變量,這一點尤其重要。

如果兩個獨立的函數必須共享一個資源,這也很有用,但我們希望確保使用是獨占的。

相關用法


注:本文由純淨天空篩選整理自tensorflow.org大神的英文原創作品 tf.raw_ops.MutexLock。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。