私はTensorFlowクラスタを稼働させています.1つのクライアントプロセスを使用してデータをエンキューし、別のプロセスからデキューしようとしています。私はこれを働かせることができません、何が間違っているのですか?テンソルをTensorFlowキューにプッシュして別のプロセスからプルするにはどうすればよいですか?
ここでデータをプッシュする私のプログラムです:
# queue_push.py
import tensorflow as tf
import time
with tf.container("qtest"):
q = tf.FIFOQueue(capacity=10, dtypes=[tf.float32],
shapes=[[]], name="q")
v = tf.placeholder(tf.float32, shape=())
enqueue = q.enqueue([v])
with tf.Session("grpc://localhost:2210") as sess:
while True:
t = time.time()
print(t)
sess.run(enqueue, feed_dict={v: t})
time.sleep(1)
とデータをプルする私のプログラム:
# queue_pull.py
import tensorflow as tf
import time
with tf.container("qtest"):
q = tf.FIFOQueue(capacity=10, dtypes=[tf.float32],
shapes=[[]], name="q")
dequeue = q.dequeue()
with tf.Session("grpc://localhost:2222") as sess:
while True:
v = sess.run(dequeue)
print("Pulled:", v)
time.sleep(0.5)
私はそれらを実行すると、ここで私が得るものです:
$ python queue_push.py
1472420887.974484
1472420888.991067
1472420889.995756
1472420890.998365
1472420892.001799
1472420893.008567
1472420894.011109
1472420895.014532
1472420896.02017
1472420897.024806
1472420898.03187
(then blocked forever)
そして、並行して:
$ python queue_pull.py
(blocked forever)
コードを大好き!最後に、エンキューはsession.run(...)内で実行する必要があります!! ARGH!ありがとう! – stolsvik