麻豆黑色丝袜jk制服福利网站-麻豆精品传媒视频观看-麻豆精品传媒一二三区在线视频-麻豆精选传媒4区2021-在线视频99-在线视频a

千鋒教育-做有情懷、有良心、有品質的職業教育機構

手機站
千鋒教育

千鋒學習站 | 隨時隨地免費學

千鋒教育

掃一掃進入千鋒手機站

領取全套視頻
千鋒教育

關注千鋒學習站小程序
隨時隨地免費學習課程

當前位置:首頁  >  技術干貨  > python隊列Queue

python隊列Queue

來源:千鋒教育
發布人:xqq
時間: 2023-11-07 08:24:21 1699316661

Queue

Queue是python標準庫中的線程安全的隊列(FIFO)實現,提供了一個適用于多線程編程的先進先出的數據結構,即隊列,用來在生產者和消費者線程之間的信息傳遞

基本FIFO隊列

classQueue.Queue(maxsize=0)

FIFO即FirstinFirstOut,先進先出。Queue提供了一個基本的FIFO容器,使用方法很簡單,maxsize是個整數,指明了隊列中能存放的數據個數的上限。一旦達到上限,插入會導致阻塞,直到隊列中的數據被消費掉。如果maxsize小于或者等于0,隊列大小沒有限制。

舉個栗子:

importQueue

q=Queue.Queue()

foriinrange(5):

q.put(i)

whilenotq.empty():

printq.get()

輸出:

0

1

2

3

4

LIFO隊列

classQueue.LifoQueue(maxsize=0)

LIFO即LastinFirstOut,后進先出。與棧的類似,使用也很簡單,maxsize用法同上

再舉個栗子:

importQueue

q=Queue.LifoQueue()

foriinrange(5):

q.put(i)

whilenotq.empty():

printq.get()

輸出:

4

3

2

1

0

可以看到僅僅是將Queue.Quenu類替換為Queue.LifiQueue類

優先級隊列

classQueue.PriorityQueue(maxsize=0)

構造一個優先隊列。maxsize用法同上。

importQueue

importthreading

classJob(object):

def__init__(self,priority,description):

self.priority=priority

self.description=description

print'Job:',description

return

def__cmp__(self,other):

returncmp(self.priority,other.priority)

q=Queue.PriorityQueue()

q.put(Job(3,'level3job'))

q.put(Job(10,'level10job'))

q.put(Job(1,'level1job'))

defprocess_job(q):

whileTrue:

next_job=q.get()

print'for:',next_job.description

q.task_done()

workers=[threading.Thread(target=process_job,args=(q,)),

threading.Thread(target=process_job,args=(q,))

]

forwinworkers:

w.setDaemon(True)

w.start()

q.join()

結果

Job:level3job

Job:level10job

Job:level1job

for:level1job

for:level3job

for:job:level10job

一些常用方法

task_done()

意味著之前入隊的一個任務已經完成。由隊列的消費者線程調用。每一個get()調用得到一個任務,接下來的task_done()調用告訴隊列該任務已經處理完畢。

如果當前一個join()正在阻塞,它將在隊列中的所有任務都處理完時恢復執行(即每一個由put()調用入隊的任務都有一個對應的task_done()調用)。

join()

阻塞調用線程,直到隊列中的所有任務被處理掉。

只要有數據被加入隊列,未完成的任務數就會增加。當消費者線程調用task_done()(意味著有消費者取得任務并完成任務),未完成的任務數就會減少。當未完成的任務數降到0,join()解除阻塞。

put(item[,block[,timeout]])

將item放入隊列中。

如果可選的參數block為True且timeout為空對象(默認的情況,阻塞調用,無超時)。

如果timeout是個正整數,阻塞調用進程最多timeout秒,如果一直無空空間可用,拋出Full異常(帶超時的阻塞調用)。

如果block為False,如果有空閑空間可用將數據放入隊列,否則立即拋出Full異常

其非阻塞版本為put_nowait等同于put(item,False)

get([block[,timeout]])

從隊列中移除并返回一個數據。block跟timeout參數同put方法

其非阻塞方法為get_nowait()相當與get(False)

empty()

如果隊列為空,返回True,反之返回False

以上內容為大家介紹了python隊列Queue,希望對大家有所幫助,如果想要了解更多Python相關知識,請關注IT培訓機構:千鋒教育。http://www.dietsnews.net/

tags: python培訓
聲明:本站稿件版權均屬千鋒教育所有,未經許可不得擅自轉載。
10年以上業內強師集結,手把手帶你蛻變精英
請您保持通訊暢通,專屬學習老師24小時內將與您1V1溝通
免費領取
今日已有369人領取成功
劉同學 138****2860 剛剛成功領取
王同學 131****2015 剛剛成功領取
張同學 133****4652 剛剛成功領取
李同學 135****8607 剛剛成功領取
楊同學 132****5667 剛剛成功領取
岳同學 134****6652 剛剛成功領取
梁同學 157****2950 剛剛成功領取
劉同學 189****1015 剛剛成功領取
張同學 155****4678 剛剛成功領取
鄒同學 139****2907 剛剛成功領取
董同學 138****2867 剛剛成功領取
周同學 136****3602 剛剛成功領取
相關推薦HOT
主站蜘蛛池模板: 亚洲三级电影片| 亚洲国产欧美日韩精品一区二区三区| 一个上面吃一个下免费| 老少交欧美另类| 久久久国产99久久国产久| 亚洲免费mv| 高h网站| 欧美日韩网站| 日韩视频在线观看| 欧美日韩国产精品自在自线| 中国speakingathome宾馆学生 | 美女羞羞视频网站| 美女隐私免费视频看| chinese国产xxxx实拍| 国产zzjjzzjj视频全免费| 亚洲迷情| 美女尿口18以下禁止观看免费| 动漫人物差差差免费动漫在线观看 | 中文天堂在线www| 一卡2卡3卡4卡免费高清| 四虎影视永久免费观看| 天天干成人网| 口工全彩无遮挡3d漫画在线| 日本高清黄色| 韩日一级毛片| 国精品在亚洲_欧美| 亚洲一区电影在线观看| 亚洲国产高清美女在线观看| 爱搞激情在线| 女人18片毛片60分钟| avtt在线| 亚洲欧美日韩在线观看播放| 久久久久久夜精品精品免费啦| 免费大黄网站在线观看| 亚洲国产精品一区二区九九| 全彩里番acg海贼王同人本子| 再深点灬舒服灬太大了np视频| 国产视频一区二| 久久精品精品| 调教女m视频| 三上悠亚亚洲一区高清|