Мне нужна очередь, в которую может помещаться несколько потоков, и несколько потоков могут читать из нее.
В Python есть как минимум два класса очереди, Queue.Queue и collection.deque, причем первый, по-видимому, использует последний для внутреннего использования. Оба утверждают, что они являются потокобезопасными в документации.
Однако в документации очереди также указано:
collection.deque является альтернативой
реализация неограниченных очередей
с быстрым атомным добавлением () и
popleft () операции, которые не
требуется блокировка.
Что, я полагаю, я не совсем понимаю: означает ли это, что deque в конце концов не является полностью поточно-ориентированным?
Если это так, я не могу полностью понять разницу между двумя классами. Я вижу, что очередь добавляет функциональность блокировки. С другой стороны, он теряет некоторые функции, такие как поддержка оператора in-operator.
Прямой доступ к внутреннему объекту deque,
x в очереди (). Deque
потокобезопасной
Кроме того, почему Queue использует мьютекс для своих операций, когда deque уже поточно-ориентирован?