參考整體流程如下圖 代碼 import tensorflow as tf"""模擬: 子線程不停的取數據放入隊列中, 主線程從隊列中取數據執行包含: 作用域的命名、把程序的圖結構寫入事件、多線程 """# 模擬異步存入樣本. # 1、 定義一個隊列,長度為1000 with tf.variable_scope("init_sub_threads"):Q = tf.FIFOQueue(1000, tf.float32)# 2、 定義子線程需要做的事情, 值循環+1, 放入隊列中 with tf.variable_scope("add_one"):var = tf.Variable(0.0, tf.float32)# 實現自增data = tf.assign_add(var, tf.constant(1.0))en_q = Q.enqueue(data)# 3、 定義隊列管理器Op,指定子線程 with tf.variable_scope("init_queue_runner"):qr = tf.train.QueueRunner(Q, enqueue_ops=[en_q] * 2)# 初始化變量的op with tf.variable_scope("init_var"):init_op = tf.global_variables_initializer()with tf.Session() as sess:# 初始化變量sess.run(init_op)# 開啟線程管理器coord = tf.train.Coordinator()# 真正開啟子線程threads = qr.create_threads(sess, start = True)# 主線程,不斷讀取數據訓練for i in range(300):print(sess.run(Q.dequeue()))# 把程序的圖結構寫入事件filewriter = tf.summary.FileWriter("./summary/", graph=sess.graph)# 回收線程coord.request_stop()coord.join(threads)