直接用代码 举例说明。
先准备数据:
运行以下各段代码前先运行上方的代码。
以下各段代码之间互相独立。
How to use queue?
|
|
当队列满或者空时会阻塞。
How to use coordinator?
Coordinator是用来协调各个线程的。 引用tensorflow官网上的说明:
Any of the threads can call coord.request_stop() to ask for all the threads to stop. To cooperate with the requests, each thread must check for coord.should_stop() on a regular basis. coord.should_stop() returns True as soon as coord.request_stop() has been called.
|
|
在调用coord.request_stop() 并且等待 enq_threads都终止之后,如果我们继续 一直执行出队操作x,那么当队列空时会产生OutOfRangeError。
How to use producer?
Tensorflow 中提供了各种producer,让我们不必直接控制线程的创建以及队列的出队入队。
Produer的作用是自动入队,返回值是出队的Tensor?
How to use tf.train.batch?
|
|
当队列空时,抛出OutOfRangeError。如果用Tensor初始化batch,那么永远不会抛出OutOfRangeError。