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