人妖在线一区,国产日韩欧美一区二区综合在线,国产啪精品视频网站免费,欧美内射深插日本少妇

新聞動態(tài)

Python數(shù)據(jù)結(jié)構(gòu)之優(yōu)先級隊列queue用法詳解

發(fā)布日期:2022-04-04 10:17 | 文章來源:gibhub

一、基本用法

Queue類實現(xiàn)了一個基本的先進(jìn)先出容器。使用put()將元素增加到這個序列的一端,使用get()從另一端刪除。具體代碼如下所示:

import queue
q = queue.Queue()
for i in range(1, 10):
 q.put(i)
while not q.empty():
 print(q.get(), end="  ")

運行之后,效果如下:

這里我們依次添加1到10到隊列中,因為先進(jìn)先出,所以出來的順序也與添加的順序相同。

二、LIFO隊列

既然有先進(jìn)先出隊列queue,那么數(shù)據(jù)結(jié)構(gòu)中肯定也有后進(jìn)先出的隊列。后進(jìn)先出的隊列為:LifoQueue,示例如下:

import queue
q = queue.LifoQueue()
for i in range(1, 10):
 q.put(i)
while not q.empty():
 print(q.get(), end="  ")

運行之后,效果如下:

三、優(yōu)先隊列

在操作系統(tǒng)中,我們常常會根據(jù)優(yōu)先級來處理任務(wù),比如系統(tǒng)的優(yōu)先級最高,我們肯定優(yōu)先處理系統(tǒng)任務(wù),然后才處理用戶的任務(wù)。同樣,queue庫給我們提供了PriorityQueue來處理優(yōu)先級的隊列。

示例如下:

import queue
import threading

class Job:
 def __init__(self, priority, desc):
  self.priority = priority
  self.desc = desc
  print("New Job:", desc)
  return
 def __eq__(self, other):
  try:
return self.priority == other.priority
  except AttributeError:
return NotImplemented
 def __lt__(self, other):
  try:
return self.priority > other.priority
  except AttributeError:
return NotImplemented

def process_Job(q):
 while True:
  next_job = q.get()
  print(next_job.desc)
  q.task_done()

q = queue.PriorityQueue()
q.put(Job(5, "Five Job"))
q.put(Job(15, "Fifteen Job"))
q.put(Job(1, "One Job"))
workers = [
 threading.Thread(target=process_Job, args=(q,)),
 threading.Thread(target=process_Job, args=(q,)),
]
for work in workers:
 work.setDaemon(True)
 work.start()
q.join()

運行之后,效果如下:

這里,我們默認(rèn)數(shù)值越大優(yōu)先級越高,可以看到15先執(zhí)行,然后再是5,1任務(wù)。這個例子展現(xiàn)了有多個線程在處理任務(wù)時,要根據(jù)get()時隊列中元素的優(yōu)先級來處理。

到此這篇關(guān)于Python數(shù)據(jù)結(jié)構(gòu)之優(yōu)先級隊列queue用法詳解的文章就介紹到這了,更多相關(guān)Python隊列queue 內(nèi)容請搜索本站以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持本站!

香港服務(wù)器租用

版權(quán)聲明:本站文章來源標(biāo)注為YINGSOO的內(nèi)容版權(quán)均為本站所有,歡迎引用、轉(zhuǎn)載,請保持原文完整并注明來源及原文鏈接。禁止復(fù)制或仿造本網(wǎng)站,禁止在非www.sddonglingsh.com所屬的服務(wù)器上建立鏡像,否則將依法追究法律責(zé)任。本站部分內(nèi)容來源于網(wǎng)友推薦、互聯(lián)網(wǎng)收集整理而來,僅供學(xué)習(xí)參考,不代表本站立場,如有內(nèi)容涉嫌侵權(quán),請聯(lián)系alex-e#qq.com處理。

相關(guān)文章

實時開通

自選配置、實時開通

免備案

全球線路精選!

全天候客戶服務(wù)

7x24全年不間斷在線

專屬顧問服務(wù)

1對1客戶咨詢顧問

在線
客服

在線客服:7*24小時在線

客服
熱線

400-630-3752
7*24小時客服服務(wù)熱線

關(guān)注
微信

關(guān)注官方微信
頂部