我正在解决一个问题,我需要保证队列中项目的顺序,但是,我还想使用多个线程来执行此操作。因此,我想知道对enqueue_many的调用是否会确保这些项目按顺序排列?
对此的一个解决方案是仅使用一个线程来排队项目,但这不是最佳的。
文档仅在队列已满的情况下提及阻止。
tf.QueueBase.enqueue_many(vals,name = None)
将零个或多个元素排入此队列。
此操作沿着第0维切割每个组件张量 制作多个队列元素。 vals中的所有张量都必须具有 第0维的大小相同。
如果此操作执行时队列已满,则会阻塞直到 所有元素都已入队。
在运行时,如果队列关闭,此操作可能会引发错误 在执行之前或期间。如果队列在此之前关闭 操作运行,tf.errors.AbortedError将被引发。如果这 操作被阻止,并且(i)队列因关闭而关闭 使用cancel_pending_enqueues = True或(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