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