Найти - Пользователи
Полная версия: queue и массив
Начало » Python для новичков » queue и массив
1
DamMercul
В чем разница между использованием queue.Queue() вместо массива, вытаскивая из него по 1 элементу с методом .pop() с индекса 0? Может там проблему с MemoryError устранили или еще что-нибудь?
py.user.next
Читай документацию
https://docs.python.org/3/library/queue.html

queue используется для взаимодействия с потоками. Список использовать нельзя, так как может быть соревнование двух потоков за его элементы.

Когда ты берёшь элемент из списка через pop(), то в начале вызова pop() в списке может находиться один элемент, который и должен быть возвращён, а во время вызова pop() другой поток может забрать элемент из списка. И у тебя получится ситуация, что pop() нашла элемент, приготовилась его вернуть, начинает его читать, а его там уже нет. Вот чтобы такого не было, нужна блокировка элемента, чтобы pop() успела проделать всё от начала до конца и вернула элемент этот. Вот у очереди есть такие блокировки, а у списка нет. Поэтому список ты можешь использовать, но только там, где не пересекаются потоки.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB