只要有任何一个线程调用了Coordinator的request_stop()
方法,所有的线程都可以通过should_stop()
方法感知并停止当前线程。将QueueRunner和Coordinator一起使用,实际上就是封装了这个判断(判断should_stop()
)操作,从而使任何一个线程出现异常时,能够正常结束整个程序(所有线程),同时主线程也可以直接调用request_stop()
方法来停止所有子线程的执行。
demo.py(队列管理器 QueueRunner,子线程,线程协调器 Coordinator):
import tensorflow as tf
import os
os.environ['TF_CPP_MIN_LOG_LEVEL']='2' # 设置警告级别
# 模拟异步,子线程读取样本到队列,主线程从队列中取样本并训练
#