import threading import time import tensorflow as tf from pprint import pprint sess = tf.InteractiveSession() # FIFOQueue에 넣을 데이터 생성: -0.81226367과 같이 하나의 값만 출력됨 gen_random_normal = tf.random_normal(shape=()) # FIFOQueue 정의 queue = tf.FIFOQueue(capacity=100, dtypes=[tf.float32], shapes=()) enque = queue.enqueue(gen_random_normal) # sess.run()을 여러번 호출하여 # FIFOQueue에 10개의 아이템을 더하는 함수 def add(): for i in range(10): sess.run(enque) # 10개의 스레드를 생성 threads = [threading.Thread(target=add, args=()) for i in range(10)] print('threads:') pprint(threads) # FIFOQueue 의 크기가 100이 될때까지 확인 for t in threads: t.start() print('='*30) print('check queue.size():') print(sess.run(queue.size())) time.sleep(0.003) print(sess.run(queue.size())) time.sleep(0.003) print(sess.run(queue.size())) # dequeue_many()를 이용해 10개 아이템 출력 x = queue.dequeue_many(10) print('='*30) print('queue.dequeue_many(10):') print(x.eval()) sess.run(queue.size())