2017-01-18 3 views
1

私はキューのアイテムの順序を保証する必要がある問題に取り組んでいますが、これを行うために複数のスレッドを使用したいと思います。したがって、enqueue_manyを呼び出すと、それらのアイテムが順番に配置されることを確実にするかどうか疑問に思っていますか?queue enqueue_many block unitllすべてのアイテムがキューにありますか?

これに対する1つの解決方法は、項目をエンキューするために1つのスレッドのみを使用することですが、最適ではありません。

ドキュメントには、キューがいっぱいになった場合のブロックのみが記載されています。

tf.QueueBase.enqueue_many(ヴァルス、名前=なし)

エンキューこのキューにゼロ以上の要素。

この操作では、0次元に沿った各コンポーネントのテンソルが、複数のキュー要素を作成するために にスライスされます。すべてのvalのテンソルは、0次元で同じサイズの でなければなりません。

この操作の実行時にキューがいっぱいになると、すべての要素がエンキューされた までブロックされます。

実行前または実行中にキューが閉じられると、この操作でエラーが発生することがあります。 この 操作が実行される前にキューが閉じられると、tf.errors.AbortedErrorが発生します。この 操作がブロックされ、(i)キューがclose_content = trueでclose 操作で閉じられているか、または(ii)セッションが で閉じられている場合、tf.errors.CancelledErrorが発生します。引数:

vals: A tensor, a list or tuple of tensors, or a dictionary from which the queue elements are taken. 
name: A name for the operation (optional). 

戻り値:

キューへのテンソルのタプルのバッチをエンキュー操作。

https://www.tensorflow.org/versions/r0.10/api_docs/python/io_ops/queues#QueueBase

答えて

0

経験的に、彼らは原子のように見えます。 IEのexampleは、大ブロックzerosonesを同時にエンキューし、次に混合があるかどうかを確認します。

関連する問題