Очередь.Очередь против. коллекции.dequePython

Программы на Python
Anonymous
Очередь.Очередь против. коллекции.deque

Сообщение Anonymous »

Мне нужна очередь, в которую несколько потоков могут помещать данные, и несколько потоков могут читать из нее.
В Python есть как минимум два класса очередей: очередь.Queue и коллекции. .deque, причем первый, по-видимому, использует второй внутри себя. В документации оба утверждают, что они потокобезопасны.
Однако в документации Queue также указано:

< р>

Код: Выделить всё

collections.deque
 — альтернативная
реализация неограниченных очередей
с помощью быстрого атомарного добавления() и

Код: Выделить всё

popleft()
операции, которые
не требуют блокировки
, а также поддерживают индексацию.

Что, наверное, я и делаю не совсем понимаю: означает ли это, что deque все-таки не является полностью потокобезопасным?
Если да, то я, возможно, не до конца понимаю разницу между этими двумя классами. Я вижу, что Queue добавляет функцию блокировки. С другой стороны, он теряет некоторые функции deque, такие как поддержка оператора in.
Осуществляет прямой доступ к внутреннему объекту deque

Код: Выделить всё

x in Queue().queue
поточно-ориентированный?
Кроме того, почему Queue использует мьютекс для своих операций, когда deque является потоко-ориентированным уже в безопасности?

Подробнее здесь: https://stackoverflow.com/questions/717 ... ions-deque

Вернуться в «Python»