class tf.PriorityQueue
See the guide: Inputs and Readers > Queues
A queue implementation that dequeues elements in prioritized order.
See tf.QueueBase
for a description of the methods on this class.
dtypes
The list of dtypes for each component of a queue element.
name
The name of the underlying queue.
names
The list of names for each component of a queue element.
queue_ref
The underlying queue reference.
shapes
The list of shapes for each component of a queue element.
__init__(capacity, types, shapes=None, names=None, shared_name=None, name='priority_queue')
Creates a queue that dequeues elements in a first-in first-out order.
A PriorityQueue
has bounded capacity; supports multiple concurrent producers and consumers; and provides exactly-once delivery.
A PriorityQueue
holds a list of up to capacity
elements. Each element is a fixed-length tuple of tensors whose dtypes are described by types
, and whose shapes are optionally described by the shapes
argument.
If the shapes
argument is specified, each component of a queue element must have the respective fixed shape. If it is unspecified, different queue elements may have different shapes, but the use of dequeue_many
is disallowed.
Enqueues and Dequeues to the PriorityQueue
must include an additional tuple entry at the beginning: the priority
. The priority must be an int64 scalar (for enqueue
) or an int64 vector (for enqueue_many
).
capacity
: An integer. The upper bound on the number of elements that may be stored in this queue.types
: A list of DType
objects. The length of types
must equal the number of tensors in each queue element, except the first priority element. The first tensor in each element is the priority, which must be type int64.shapes
: (Optional.) A list of fully-defined TensorShape
objects, with the same length as types
, or None
.names
: (Optional.) A list of strings naming the components in the queue with the same length as dtypes
, or None
. If specified, the dequeue methods return a dictionary with the names as keys.shared_name
: (Optional.) If non-empty, this queue will be shared under the given name across multiple sessions.name
: Optional name for the queue operation.close(cancel_pending_enqueues=False, name=None)
Closes this queue.
This operation signals that no more elements will be enqueued in the given queue. Subsequent enqueue
and enqueue_many
operations will fail. Subsequent dequeue
and dequeue_many
operations will continue to succeed if sufficient elements remain in the queue. Subsequent dequeue
and dequeue_many
operations that would block will fail immediately.
If cancel_pending_enqueues
is True
, all pending requests will also be cancelled.
cancel_pending_enqueues
: (Optional.) A boolean, defaulting to False
(described above).name
: A name for the operation (optional).The operation that closes the queue.
dequeue(name=None)
Dequeues one element from this queue.
If the queue is empty when this operation executes, it will block until there is an element to dequeue.
At runtime, this operation may raise an error if the queue is tf.QueueBase.close
before or during its execution. If the queue is closed, the queue is empty, and there are no pending enqueue operations that can fulfill this request, tf.errors.OutOfRangeError
will be raised. If the session is tf.Session.close
, tf.errors.CancelledError
will be raised.
name
: A name for the operation (optional).The tuple of tensors that was dequeued.
dequeue_many(n, name=None)
Dequeues and concatenates n
elements from this queue.
This operation concatenates queue-element component tensors along the 0th dimension to make a single component tensor. All of the components in the dequeued tuple will have size n
in the 0th dimension.
If the queue is closed and there are less than n
elements left, then an OutOfRange
exception is raised.
At runtime, this operation may raise an error if the queue is tf.QueueBase.close
before or during its execution. If the queue is closed, the queue contains fewer than n
elements, and there are no pending enqueue operations that can fulfill this request, tf.errors.OutOfRangeError
will be raised. If the session is tf.Session.close
, tf.errors.CancelledError
will be raised.
n
: A scalar Tensor
containing the number of elements to dequeue.name
: A name for the operation (optional).The tuple of concatenated tensors that was dequeued.
dequeue_up_to(n, name=None)
Dequeues and concatenates n
elements from this queue.
Note This operation is not supported by all queues. If a queue does not support DequeueUpTo, then a tf.errors.UnimplementedError
is raised.
This operation concatenates queue-element component tensors along the 0th dimension to make a single component tensor. If the queue has not been closed, all of the components in the dequeued tuple will have size n
in the 0th dimension.
If the queue is closed and there are more than 0
but fewer than n
elements remaining, then instead of raising a tf.errors.OutOfRangeError
like tf.QueueBase.dequeue_many
, less than n
elements are returned immediately. If the queue is closed and there are 0
elements left in the queue, then a tf.errors.OutOfRangeError
is raised just like in dequeue_many
. Otherwise the behavior is identical to dequeue_many
.
n
: A scalar Tensor
containing the number of elements to dequeue.name
: A name for the operation (optional).The tuple of concatenated tensors that was dequeued.
enqueue(vals, name=None)
Enqueues one element to this queue.
If the queue is full when this operation executes, it will block until the element has been enqueued.
At runtime, this operation may raise an error if the queue is tf.QueueBase.close
before or during its execution. If the queue is closed before this operation runs, tf.errors.CancelledError
will be raised. If this operation is blocked, and either (i) the queue is closed by a close operation with cancel_pending_enqueues=True
, or (ii) the session is tf.Session.close
, tf.errors.CancelledError
will be raised.
vals
: A tensor, a list or tuple of tensors, or a dictionary containing the values to enqueue.name
: A name for the operation (optional).The operation that enqueues a new tuple of tensors to the queue.
enqueue_many(vals, name=None)
Enqueues zero or more elements to this queue.
This operation slices each component tensor along the 0th dimension to make multiple queue elements. All of the tensors in vals
must have the same size in the 0th dimension.
If the queue is full when this operation executes, it will block until all of the elements have been enqueued.
At runtime, this operation may raise an error if the queue is tf.QueueBase.close
before or during its execution. If the queue is closed before this operation runs, tf.errors.CancelledError
will be raised. If this operation is blocked, and either (i) the queue is closed by a close operation with cancel_pending_enqueues=True
, or (ii) the session is tf.Session.close
, tf.errors.CancelledError
will be raised.
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).The operation that enqueues a batch of tuples of tensors to the queue.
from_list(index, queues)
Create a queue using the queue reference from queues[index]
.
index
: An integer scalar tensor that determines the input that gets selected.queues
: A list of QueueBase
objects.A QueueBase
object.
TypeError
: When queues
is not a list of QueueBase
objects, or when the data types of queues
are not all the same.size(name=None)
Compute the number of elements in this queue.
name
: A name for the operation (optional).A scalar tensor containing the number of elements in this queue.
Defined in tensorflow/python/ops/data_flow_ops.py
.
© 2017 The TensorFlow Authors. All rights reserved.
Licensed under the Creative Commons Attribution License 3.0.
Code samples licensed under the Apache 2.0 License.
https://www.tensorflow.org/api_docs/python/tf/PriorityQueue