協調器用法演示

2021-08-19 22:18:29 字數 1755 閱讀 6932

一 例項描述

先建立乙個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元...