当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


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。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。