tensorflow随笔-队列(10)

版权声明:本文为博主原创文章,未经博主允许不得转载。 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

猜你喜欢

转载自blog.csdn.net/u010255642/article/details/82766929
今日推荐