Форум сайта python.su
13
В чем разница между использованием queue.Queue() вместо массива, вытаскивая из него по 1 элементу с методом .pop() с индекса 0? Может там проблему с MemoryError устранили или еще что-нибудь?
# Life loop while alive: if (fun > boredom) and money: pass_day(fun, boredom, money) continue else: break
Офлайн
857
Читай документацию
https://docs.python.org/3/library/queue.html
queue используется для взаимодействия с потоками. Список использовать нельзя, так как может быть соревнование двух потоков за его элементы.
Когда ты берёшь элемент из списка через pop(), то в начале вызова pop() в списке может находиться один элемент, который и должен быть возвращён, а во время вызова pop() другой поток может забрать элемент из списка. И у тебя получится ситуация, что pop() нашла элемент, приготовилась его вернуть, начинает его читать, а его там уже нет. Вот чтобы такого не было, нужна блокировка элемента, чтобы pop() успела проделать всё от начала до конца и вернула элемент этот. Вот у очереди есть такие блокировки, а у списка нет. Поэтому список ты можешь использовать, но только там, где не пересекаются потоки.
Офлайн