queue

Π‘ΠΈΠ½Ρ…Ρ€ΠΎΠ½ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ класс ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ

Π˜ΡΡ…ΠΎΠ΄Π½Ρ‹ΠΉ ΠΊΠΎΠ΄: Lib/queue.py

ΠœΠΎΠ΄ΡƒΠ»ΡŒ queue Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅Ρ‚ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ с нСсколькими производитСлями ΠΈ потрСбитСлями. Π­Ρ‚ΠΎ особСнно ΠΏΠΎΠ»Π΅Π·Π½ΠΎ Π² ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡ‚ΠΎΡ‡Π½ΠΎΠΌ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ, ΠΊΠΎΠ³Π΄Π° Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ бСзопасно ΠΎΠ±ΠΌΠ΅Π½ΠΈΠ²Π°Ρ‚ΡŒΡΡ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠ΅ΠΉ ΠΌΠ΅ΠΆΠ΄Ρƒ нСсколькими ΠΏΠΎΡ‚ΠΎΠΊΠ°ΠΌΠΈ. Класс Queue Π² этом ΠΌΠΎΠ΄ΡƒΠ»Π΅ Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅Ρ‚ всю Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡƒΡŽ сСмантику Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ.

Π’ ΠΌΠΎΠ΄ΡƒΠ»Π΅ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Ρ‹ Ρ‚Ρ€ΠΈ Ρ‚ΠΈΠΏΠ° ΠΎΡ‡Π΅Ρ€Π΅Π΄Π΅ΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ€Π°Π·Π»ΠΈΡ‡Π°ΡŽΡ‚ΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ порядком получСния записСй. Π’ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ FIFO ΠΏΠ΅Ρ€Π²Ρ‹Π΅ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π½Ρ‹Π΅ Π·Π°Π΄Π°Ρ‡ΠΈ ΠΈΠ·Π²Π»Π΅ΠΊΠ°ΡŽΡ‚ΡΡ ΠΏΠ΅Ρ€Π²Ρ‹ΠΌΠΈ. Π’ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ LIFO послСдняя добавлСнная запись извлСкаСтся ΠΏΠ΅Ρ€Π²ΠΎΠΉ (Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΊΠ°ΠΊ стСк). Π’ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ с ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚ΠΎΠΌ записи хранятся отсортированными (с использованиСм модуля heapq), ΠΈ сначала извлСкаСтся запись с наимСньшим Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ.

Π’Π½ΡƒΡ‚Ρ€ΠΈ эти Ρ‚Ρ€ΠΈ Ρ‚ΠΈΠΏΠ° ΠΎΡ‡Π΅Ρ€Π΅Π΄Π΅ΠΉ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ для Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ ΠΊΠΎΠ½ΠΊΡƒΡ€ΠΈΡ€ΡƒΡŽΡ‰ΠΈΡ… ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ²; ΠΎΠ΄Π½Π°ΠΊΠΎ ΠΎΠ½ΠΈ Π½Π΅ ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Ρ‹ для ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎΠ³ΠΎ Π²Ρ…ΠΎΠ΄Π° Π² ΠΏΠΎΡ‚ΠΎΠΊΠ΅.

ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, ΠΌΠΎΠ΄ΡƒΠ»ΡŒ Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅Ρ‚ «простой» Ρ‚ΠΈΠΏ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ FIFO, SimpleQueue, конкрСтная рСализация ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ обСспСчиваСт Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΠΈ Π² ΠΎΠ±ΠΌΠ΅Π½ Π½Π° ΠΌΠ΅Π½ΡŒΡˆΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ.

ΠœΠΎΠ΄ΡƒΠ»ΡŒ queue опрСдСляСт ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ классы ΠΈ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ:

  • queue.Queue class - конструктор ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ FIFO

  • queue.LifoQueue class

  • queue.PriorityQueue class

  • queue.SimpleQueue class

  • queue.Empty exception - ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ Π² случаС пустого ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Queue

  • queue.Full exception

ΠžΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Queue

Queue ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ (Queue, LifoQueue ΠΈΠ»ΠΈ PriorityQueue) ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‚ общСдоступныС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹, описанныС Π½ΠΈΠΆΠ΅.

  • Queue.qsize ()

  • Queue.empty ()

  • Queue.full ()

  • Queue.put () - ΠΏΠΎΠΌΠ΅Ρ‰Π°Π΅Ρ‚ Π·Π°Π΄Π°Π½Π½Ρ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π² ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ

  • Queue.put_nowait ()

  • Queue.get () - ΠΈΠ·Π²Π»Π΅ΠΊΠ°Π΅Ρ‚ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ ΠΈΠ· ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ

  • Queue.get_nowait ()

ΠŸΡ€Π΅Π΄Π»Π°Π³Π°ΡŽΡ‚ΡΡ Π΄Π²Π° ΠΌΠ΅Ρ‚ΠΎΠ΄Π° для ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ отслСТивания Ρ‚ΠΎΠ³ΠΎ, Π±Ρ‹Π»ΠΈ Π»ΠΈ Π·Π°Π΄Π°Ρ‡ΠΈ, поставлСнныС Π² ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ, ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Π½Ρ‹ ΠΏΠΎΡ‚ΠΎΠΊΠ°ΠΌΠΈ-потрСбитСлями Π΄Π΅ΠΌΠΎΠ½Π°.

  • Queue.task_done ()

  • Queue.join ()

ΠžΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ SimpleQueue

SimpleQueue ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‚ общСдоступныС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹, описанныС Π½ΠΈΠΆΠ΅.

  • SimpleQueue.qsize ()

  • SimpleQueue.empty ()

  • SimpleQueue.put ()

  • SimpleQueue.put_nowait ()

  • SimpleQueue.get ()

  • SimpleQueue.get_nowait ()

Last updated

Was this helpful?