線程協調器。
用法
tf.train.Coordinator(
clean_stop_exception_types=None
)
參數
-
clean_stop_exception_types
應導致協調器完全停止的異常類型的可選元組。如果將其中一種類型的異常報告給request_stop(ex)
,則協調器的行為就像調用了request_stop(None)
。默認為(tf.errors.OutOfRangeError,)
,輸入隊列使用它來表示輸入結束。從 Python 迭代器提供訓練數據時,通常會將StopIteration
添加到此列表中。
屬性
-
joined
這個類實現了一個簡單的機製來協調一組線程的終止。
用法:
# Create a coordinator.
coord = Coordinator()
# Start a number of threads, passing the coordinator to each of them.
...start thread 1...(coord, ...)
...start thread N...(coord, ...)
# Wait for all the threads to terminate.
coord.join(threads)
任何線程都可以調用coord.request_stop()
來請求所有線程停止。為了配合請求,每個線程必須定期檢查coord.should_stop()
。 coord.should_stop()
在調用 coord.request_stop()
後立即返回 True
。
使用協調器運行的典型線程將執行以下操作:
while not coord.should_stop():
...do some work...
異常處理:
作為request_stop()
調用的一部分,線程可以向協調器報告異常。異常將從coord.join()
調用中重新引發。
線程代碼:
try:
while not coord.should_stop():
...do some work...
except Exception as e:
coord.request_stop(e)
主要代碼:
try:
...
coord = Coordinator()
# Start a number of threads, passing the coordinator to each of them.
...start thread 1...(coord, ...)
...start thread N...(coord, ...)
# Wait for all the threads to terminate.
coord.join(threads)
except Exception as e:
...exception that was passed to coord.request_stop()
為了簡化線程實現,Coordinator 提供了一個上下文處理程序stop_on_exception()
,如果引發異常,它會自動請求停止。使用上下文處理程序,上麵的線程代碼可以寫成:
with coord.stop_on_exception():
while not coord.should_stop():
...do some work...
停止寬限期:
在一個線程調用coord.request_stop()
後,其他線程有一個固定的停止時間,這稱為“停止寬限期”,默認為 2 分鍾。如果在寬限期到期後任何線程仍處於活動狀態,coord.join()
將引發 RuntimeError 報告落後者。
try:
...
coord = Coordinator()
# Start a number of threads, passing the coordinator to each of them.
...start thread 1...(coord, ...)
...start thread N...(coord, ...)
# Wait for all the threads to terminate, give them 10s grace period
coord.join(threads, stop_grace_period_secs=10)
except RuntimeError:
...one of the threads took more than 10s to stop after request_stop()
...was called.
except Exception:
...exception that was passed to coord.request_stop()
相關用法
- Python tf.train.Coordinator.stop_on_exception用法及代碼示例
- Python tf.train.Checkpoint.restore用法及代碼示例
- Python tf.train.Checkpoint.read用法及代碼示例
- Python tf.train.CheckpointOptions用法及代碼示例
- Python tf.train.ClusterSpec用法及代碼示例
- Python tf.train.Checkpoint.save用法及代碼示例
- Python tf.train.Checkpoint.write用法及代碼示例
- Python tf.train.CheckpointManager用法及代碼示例
- Python tf.train.Checkpoint用法及代碼示例
- Python tf.train.ExponentialMovingAverage用法及代碼示例
- Python tf.train.list_variables用法及代碼示例
- Python tf.transpose用法及代碼示例
注:本文由純淨天空篩選整理自tensorflow.org大神的英文原創作品 tf.train.Coordinator。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。