一 例項描述
先建立乙個100大小的佇列。主線程不停地加1,佇列執行緒再把主線程裡的計數器放到佇列裡。當隊列為空時,主線程在sess.run(queue.dequeue())語句位置掛起,當佇列執行緒寫入佇列中時,主線程的計數器開始工作。整個操作都是在使用with語法的session中進行的,由於使用了coordinator,當session要關閉之前會進行coord.request_stop函式將所有執行緒關閉,之後才會關閉session。
二 **
import tensorflow as tf
#建立長度為100的佇列
queue = tf.fifoqueue(100,"float")
c = tf.variable(0.0) #計數器
#加1操作
op = tf.assign_add(c,tf.constant(1.0))
#操作:將計數器的結果加入佇列
enqueue_op = queue.enqueue(c)
#建立乙個佇列管理器queuerunner,用這兩個操作向q中新增元素。目前我們只使用乙個執行緒:
qr = tf.train.queuerunner(queue,enqueue_ops=[op,enqueue_op])
with tf.session() as sess:
sess.run(tf.global_variables_initializer())
coord = tf.train.coordinator()
## 啟動入隊執行緒, coordinator是執行緒的引數
enqueue_threads = qr.create_threads(sess, coord = coord,start=true) # 啟動入隊執行緒
# 主線程
for i in range(0, 10):
print ("-------------------------")
print(sess.run(queue.dequeue()))
coord.request_stop() #通知其他執行緒關閉 其他所有執行緒關閉之後,這一函式才能返回
#coord.join(enqueue_threads)
三 執行結果
-------------------------
1788.0
-------------------------
1789.0
-------------------------
2066.0
-------------------------
2073.0
-------------------------
2347.0
-------------------------
2562.0
-------------------------
2568.0
-------------------------
2573.0
-------------------------
2578.0
-------------------------
2580.0
四 說明
還可以使用coord.join(enqueue_threads)指定等待某個程序結束。
迭代器用法
迭代器iterator iterator list.iterator while iterator.hasnext int arrays new int 10 for int i 0 i arrays.length i list string list new arraylist string fo...
vector容器用法
1 標頭檔案 include.2 建立vector物件,vector vec 3 尾部插入數字 vec.push back a 4 使用下標訪問元素,cout vector iterator it for it vec.begin it vec.end it cout it 6 插入元素 vec.i...
選擇器用法
選擇器 idelement class selertor1,selector2 逗號 ancestor descendant 祖先元素的所有後代元素 parent child 父元素的所有子元素 prev next 所有緊接在prev元素後面的next元素 prev siblings 匹配prev元...