"Это 9-й день моего участия в ноябрьском испытании обновлений, ознакомьтесь с подробностями события:Вызов последнего обновления 2021 г."
официальная документацияdocs.Python.org/3.6/библиотека…
Очередь — это производный список, который имеет структуру данных «первым пришел — первым обслужен» (FIFO) по сравнению с обычным списком, т. е. Элемент, который первым попадает в очередь, первым извлекается и обрабатывается. Очереди могут вставлять элементы только из конца очереди и удалять элементы из начала очереди. Это как стоять в очереди в банке, чтобы заниматься бизнесом: первый, кого передают по номеру, тот и занимается первым делом, а остальные выстраиваются в очередь по номеру. Это их очередь.
Модуль очередей используется в Python3 для реализации функции очереди. Queue.Queue обычно используется.
import queue #引入queue模块
q1 = queue.Queue(maxsize = 10) #创建queue对象,队列长度为10。通过maxsize来制定队列长度。
q2 = queue.Queue()#创建queue对象,队列长度为无限。不指定maxsize,队列长度为无限。
Помещает значение в очередь в конце очереди.
q.put(10) #此时放入的值为10,还可以放入其他类型值,例如字符串,列表,元组等。
Взять значение из очереди и удалить его в начале очереди
q.get() ##此时取出的值为10.
Стоит отметить, что из-за природы очередей очереди часто используются для многопоточной связи. Потому что каждый раз, когда Queue использует get() для получения данных, она будет получать данные из внутреннего Удалите полученные данные, чтобы гарантировать, что повторяющиеся данные не будут получены в следующий раз, поэтому очередь является потокобезопасной. Хотя списки или кортежи могут использоваться в качестве структур хранения потоков, они небезопасны для потоков и должны быть заблокированы сами по себе, чтобы обеспечить безопасность потоков.
q.qsize() #返回队列大小
q.full() #若队列为满,返回True,否则返回False。注意,队列若含有元素,但没有达到maxsize,仍会返回False。
q.empty() #若队列为空,返回True,否则返回False
q.task_done() #在完成工作后,函数会向队列发送信号
q.join() #等到队列为空,再执行其他操作。
Также есть общий атрибут.Если вы хотите узнать конкретные элементы в очереди, вы можете использовать: q.queue; количество незавершенных элементов будет увеличиваться по мере добавления элемента в очередь. Незавершенный номер, пока поток-потребитель вызывает task_done(), чтобы указать, что он был удален, его вызов завершается. Когда количество незавершенных задач равно 0, функция join() не блокируется.
Модуль Queue решает проблему производителей и потребителей. Он особенно полезен, когда взаимодействие потоков выполняется в многопоточном программировании. Класс Queue инкапсулирует процесс блокировки и разблокировки.