import queue
q = queue.Queue()
q.put(5)
q.put(7)
print (q.get ()) удаляет элемент в начале очереди. Как распечатать этот элемент, не удаляя его? Возможно ли это сделать?






У объекта Queue есть атрибут объекта collections.deque. См. Документацию Python по доступу к элементам двухсторонней очереди с точки зрения эффективности. Список может быть лучшим вариантом использования, если вам нужно получить доступ к элементам случайным образом.
import queue
if __name__ == "__main__":
q = queue.Queue()
q.put(5)
q.put(7)
"""
dir() is helpful if you don't want to read the documentation
and just want a quick reminder of what attributes are in your object
It shows us there is an attribute named queue in the Queue class
"""
for attr in dir(q):
print(attr)
#Print first element in queue
print("\nLooking at the first element")
print(q.queue[0])
print("\nGetting the first element")
print(q.get())
print("\nLooking again at the first element")
print(q.queue[0])
>>>
put
put_nowait
qsize
queue
task_done
unfinished_tasks
Looking at the first element
5
Getting the first element
5
Looking again at the first element
7
>>>
Если вы не используете свою очередь в качестве механизма межпоточного взаимодействия, вам следует использовать
collections.deque, а неqueue.Queue. Если вы используете свою очередь для обмена данными между потоками, то операция просмотра редко бывает полезной или безопасной для таких случаев использования, и вам следует тщательно подумать, нужно ли вам это.