یک منبع mutex را قفل می کند. خروجی قفل است. تا زمانی که تانسور قفل
زنده است، هر درخواست دیگری برای استفاده از «MutexLock» با این mutex منتظر خواهد ماند.
این به ویژه برای ایجاد یک بخش حیاتی در صورت استفاده همراه با «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» یک یا چند متغیر را در یک زمان تغییر دهد.
همچنین اگر دو تابع جداگانه باید یک منبع را به اشتراک بگذارند مفید است، اما ما می خواهیم اطمینان حاصل کنیم که استفاده از آن منحصر به فرد است.
روش های عمومی
خروجی <Object> | asOutput () دسته نمادین یک تانسور را برمیگرداند. |
MutexLock ثابت | |
خروجی <?> | mutexLock () تانسوری که یک اشاره گر مشترک را به یک قفل در mutex نگه می دارد. هنگامی که تانسور از بین می رود، تعداد استفاده از اشاره گر مشترک به میزان 1 کاهش می یابد. |
روش های ارثی
روش های عمومی
خروجی عمومی <Object> asOutput ()
دسته نمادین یک تانسور را برمیگرداند.
ورودی های عملیات TensorFlow خروجی های عملیات تنسورفلو دیگر هستند. این روش برای به دست آوردن یک دسته نمادین که نشان دهنده محاسبه ورودی است استفاده می شود.
ایجاد MutexLock استاتیک عمومی (حوزه دامنه ، عملوند <?> mutex)
روش کارخانه برای ایجاد کلاسی که یک عملیات MutexLock جدید را بسته بندی می کند.
پارامترها
دامنه | محدوده فعلی |
---|---|
mutex | منبع mutex برای قفل کردن. |
برمی گرداند
- یک نمونه جدید از MutexLock
خروجی عمومی <?> mutexLock ()
تانسوری که یک اشاره گر مشترک را به یک قفل در mutex نگه می دارد. وقتی تانسور از بین میرود، تعداد استفاده از اشارهگر مشترک 1 کاهش مییابد. وقتی به 0 رسید، قفل آزاد میشود.