版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u010255642/article/details/82766929
#!/usr/bin/env python2
# -*- coding: utf-8 -*-
"""
Created on Thu Sep 6 10:16:37 2018
@author: myhaspl
@email:[email protected]
"""
import tensorflow as tf
q=tf.RandomShuffleQueue(capacity=20,min_after_dequeue=2,dtypes="float")
with tf.Session() as sess:
for i in range(0,12):
sess.run(q.enqueue(i))
for i in range(0,12):
print sess.run(q.dequeue())
因为需要保留2个元素,所以最后2个元素无法出列,导致阻塞
10.0
11.0
2.0
7.0
4.0
6.0
3.0
1.0
8.0
0.0
使用队列管理器
#!/usr/bin/env python2
# -*- coding: utf-8 -*-
"""
Created on Thu Sep 6 10:16:37 2018
@author: myhaspl
@email:[email protected]
"""
import tensorflow as tf
import numpy as np
q=tf.RandomShuffleQueue(capacity=200,min_after_dequeue=2,dtypes="float")
counter=tf.Variable(0.)
increment_op=tf.assign_add(counter,tf.constant(1.0))
enqueue_op=q.enqueue([counter])
init=tf.global_variables_initializer()
qr=tf.train.QueueRunner(q,enqueue_ops=[increment_op,enqueue_op]*1)
#主线程
with tf.Session() as sess:
sess.run(init)
enqueue_threads=qr.create_threads(sess,start=True)#启动入队线程
for i in range(0,10):
print sess.run(q.dequeue())
6.0
12.0
20.0
27.0
36.0
49.0
57.0
66.0
76.0
81.0
队列没能按我们期待的自然数列输出,且线程被阻断。
#!/usr/bin/env python2
# -*- coding: utf-8 -*-
"""
Created on Thu Sep 6 10:16:37 2018
@author: myhaspl
@email:[email protected]
"""
import tensorflow as tf
import numpy as np
q=tf.RandomShuffleQueue(capacity=200,min_after_dequeue=2,dtypes="float")
#x=np.random.randint(100,size=100)
counter=tf.Variable(0.)
increment_op=tf.assign_add(counter,tf.constant(1.0))
enqueue_op=q.enqueue([counter])
init=tf.global_variables_initializer()
qr=tf.train.QueueRunner(q,enqueue_ops=[increment_op,enqueue_op]*1)
#主线程
with tf.Session() as sess:
sess.run(init)
coord=tf.train.Coordinator()#协调器,协调线程间的关系。
enqueue_threads=qr.create_threads(sess,coord=coord,start=True)#启动入队线程
for i in range(0,10):
print sess.run(q.dequeue())
coord.request_stop()#通知其它线程关闭
coord.join(enqueue_threads)#关闭其它线程后,合并到主线程
4.0
15.0
24.0
36.0
46.0
57.0
68.0
78.0
89.0
98.0