成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

Python多線程通信queue隊(duì)列用法實(shí)例分析

瀏覽:3日期:2022-08-01 13:39:20

本文實(shí)例講述了Python多線程通信queue隊(duì)列用法。分享給大家供大家參考,具體如下:

queue: 什么是隊(duì)列:是一種特殊的結(jié)構(gòu),類似于列表。不過(guò)就像排隊(duì)一樣,隊(duì)列中的元素一旦取出,那么就會(huì)從隊(duì)列中刪除。 線程之間的通信可以使用隊(duì)列queue來(lái)進(jìn)行 線程如何使用queue.Queue【還有其他類型的對(duì)象下面講】來(lái)通信: 1.創(chuàng)建一個(gè)Queue對(duì)象:對(duì)象=queue.Queue(x),x是隊(duì)列容量,x可以不填,默認(rèn)沒(méi)有容量限制, 2.get()可以使線程從隊(duì)列中獲取一個(gè)元素,如果隊(duì)列為空,get會(huì)等待,get可以設(shè)置timeout參數(shù),這是等待時(shí)間 3.put()可以往隊(duì)列中放入一個(gè)元素【默認(rèn)隊(duì)列Queue是先入先出的,先放入的元素會(huì)先取出去】,如果隊(duì)列滿了,put會(huì)等待,put可以設(shè)置timeout參數(shù),這是等待時(shí)間 Python多線程通信queue隊(duì)列用法實(shí)例分析

【下例為:sender線程發(fā)送直徑給recvder線程,recvder計(jì)算得出周長(zhǎng)】

import threading,time,queue,randomdef sender():#sender發(fā)送直徑 while True: x=random.randint(1,10) print('send done:',x) q.put(x)#每個(gè)一秒就放入一個(gè)隨機(jī)數(shù) time.sleep(1)#每隔一秒就放入一個(gè)adef recvder():#recvder計(jì)算周長(zhǎng) while True: x=q.get() print('recv done:',x*3.14)#每隔一秒就取出一個(gè)元素,計(jì)算結(jié)果 time.sleep(1)q=queue.Queue()t1=threading.Thread(target=sender)t2=threading.Thread(target=recvder)t1.start()t2.start()t1.join()t2.join() Queue 對(duì)象已經(jīng)包含了必要的鎖,所以不用擔(dān)心會(huì)出錯(cuò)

import threading,time,queue,randomdef sender():#sender發(fā)送直徑 while True: x=random.randint(1,10) print('send done:',x) q.put(x)#每個(gè)一秒就放入一個(gè)隨機(jī)數(shù) time.sleep(1)#每隔一秒就放入一個(gè)adef recvder():#recvder計(jì)算周長(zhǎng) while True: x=q.get() print(threading.current_thread(),'recv done:',x*3.14)#每隔一秒就取出一個(gè)元素,計(jì)算結(jié)果 time.sleep(2)q=queue.Queue()t1=threading.Thread(target=sender)t2=threading.Thread(target=recvder)t3=threading.Thread(target=recvder)t1.start()t2.start()t3.start()t1.join()t2.join()t3.join()

注:

隊(duì)列可以有容量限制:

Python多線程通信queue隊(duì)列用法實(shí)例分析

timeout的設(shè)置:

Python多線程通信queue隊(duì)列用法實(shí)例分析

隊(duì)列的其他相關(guān)函數(shù)【設(shè)q為一個(gè)Queue對(duì)象】: q.qsize():返回當(dāng)前隊(duì)列的元素個(gè)數(shù) q.empty():判斷隊(duì)列是否空,返回布爾值 q.full():判斷隊(duì)列是否滿,返回布爾值 q.get_nowait():直接使用get(),如果此時(shí)隊(duì)列中沒(méi)有元素,那么會(huì)阻塞等待,使用get_nowait()后,如果隊(duì)列中沒(méi)有元素,那么會(huì)報(bào)錯(cuò) q.put_nowait():直接使用put(),如果此時(shí)隊(duì)列滿了,那么會(huì)阻塞等待,使用put_nowait()后,如果隊(duì)列已經(jīng)滿了,那么會(huì)報(bào)錯(cuò) q.task_done() :在完成一項(xiàng)工作之后,task_done()函數(shù)向任務(wù)已經(jīng)完成的隊(duì)列發(fā)送一個(gè)信號(hào)【功能類似于:有一個(gè)只能承重一個(gè)人的獨(dú)木橋,A來(lái)了發(fā)現(xiàn)B在橋上,所以A不能上橋,他就在等,等到B過(guò)完橋后喊一下他,他才知道B過(guò)完橋了】【q.task_done主要是跟q.join()配合使用的】 q.join():實(shí)際上意味著等到隊(duì)列為空,再執(zhí)行別的操作【每次get后需要調(diào)用task_done,直到所有隊(duì)列為空,這時(shí)才會(huì)執(zhí)行join下面的】

import threading,queue,time'''這個(gè)例子是:廠家跟司機(jī)約定,生產(chǎn)滿3個(gè),司機(jī)才來(lái)拉,而一個(gè)個(gè)拉走,只有當(dāng)3個(gè)都拉走,廠家才繼續(xù)生產(chǎn)'''def producer():#廠家 while True: for i in range(3): q.put(i) start_time=time.time() q.join()##結(jié)果顯示join這里堵塞住了廠家線程 print('wait time:',time.time()-start_time)#用來(lái)測(cè)試是否堵塞,證明不是因?yàn)樗緳C(jī)的sleep堵塞運(yùn)行def driver():#老司機(jī) while True: for i in range(3): print(q.get()) q.task_done() print('') time.sleep(2)q=queue.Queue()t1=threading.Thread(target=producer)t2=threading.Thread(target=driver)t1.start()t2.start()t1.join()t2.join()

Python多線程通信queue隊(duì)列用法實(shí)例分析

queue中除了Queue之外,還有其他的隊(duì)列,下面是常用的幾個(gè): Queue是先入先出的隊(duì)列:

Python多線程通信queue隊(duì)列用法實(shí)例分析

LifoQueue則是后入先出的隊(duì)列:

Python多線程通信queue隊(duì)列用法實(shí)例分析

PriorityQueue是由裝入元素時(shí)指定的優(yōu)先級(jí)來(lái)決定出元素的順序的: 創(chuàng)建方法:隊(duì)列對(duì)象=queue.PriorityQueue() 優(yōu)先級(jí)是小的優(yōu)先,但不能混合排序,str的只能跟str的一起排序,int的只能跟int一起排序 PriorityQueue的put的參數(shù)是元組,格式為:隊(duì)列對(duì)象.put((優(yōu)先級(jí), 數(shù)據(jù)))

Python多線程通信queue隊(duì)列用法實(shí)例分析Python多線程通信queue隊(duì)列用法實(shí)例分析

deque 是雙端隊(duì)列,允許先入先出和后入后出,即兩端都可以出 由于雙端隊(duì)列實(shí)用性不大,實(shí)際上與列表沒(méi)什么區(qū)別,在此不做闡述,大家可以參考://www.jb51.net/article/183382.htm

更多關(guān)于Python相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Python進(jìn)程與線程操作技巧總結(jié)》、《Python數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Python函數(shù)使用技巧總結(jié)》、《Python字符串操作技巧匯總》、《Python入門與進(jìn)階經(jīng)典教程》、《Python+MySQL數(shù)據(jù)庫(kù)程序設(shè)計(jì)入門教程》及《Python常見(jiàn)數(shù)據(jù)庫(kù)操作技巧匯總》

希望本文所述對(duì)大家Python程序設(shè)計(jì)有所幫助。

標(biāo)簽: Python 編程
相關(guān)文章:
成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久
亚洲国产清纯| 欧美艳星brazzers| 色综合久久99| 亚洲精品va在线观看| 午夜激情一区| 国产欧美精品一区aⅴ影院| 成人激情午夜影院| 91精品国产色综合久久不卡电影| 日韩黄色一级片| 亚洲精品久久| 日韩一区欧美小说| 好看的日韩av电影| 中文字幕国产一区二区| 欧美在线视频二区| 国产日韩欧美综合一区| 91在线精品一区二区三区| 日韩色在线观看| 国产91精品一区二区麻豆亚洲| 欧美日韩在线播放一区| 日韩国产高清影视| 色婷婷精品久久二区二区蜜臂av| 亚洲国产裸拍裸体视频在线观看乱了 | 国产女主播视频一区二区| 99久久er热在这里只有精品66| 精品国产3级a| 色综合天天狠狠| 国产精品亚洲а∨天堂免在线| 欧美亚洲动漫精品| 精品亚洲成a人| 欧美一区二区三区视频| 国产精品综合久久| 欧美精品一区二区三区蜜桃| 99久久精品国产一区二区三区| 精品久久久影院| 色综合一区二区| 国产精品乱人伦中文| 亚洲精品1区| 1024成人网| 亚洲一区三区电影在线观看| 午夜精品视频一区| 欧美视频一二三区| 丁香激情综合国产| 久久久久久久电影| 欧美性大战久久久久| 国产精品久久一级| 国产精品区二区三区日本| 午夜欧美2019年伦理 | 久久久久久久一区| 亚洲国产合集| 日本一道高清亚洲日美韩| 制服丝袜亚洲播放| 97超碰欧美中文字幕| 最好看的中文字幕久久| 亚久久调教视频| 精品在线播放免费| 亚洲精品在线电影| 精品91在线| 天堂av在线一区| 制服丝袜亚洲色图| 91在线精品一区二区三区| 日韩理论片一区二区| 午夜在线观看免费一区| 久久99国产乱子伦精品免费| 欧美xxxxxxxxx| 最近看过的日韩成人| 免费在线观看精品| 日韩欧美久久一区| 国产精品久久7| 无吗不卡中文字幕| 制服丝袜亚洲色图| 欧美韩国一区| 偷窥少妇高潮呻吟av久久免费| 欧美精三区欧美精三区| 欧美日韩p片| 日韩和的一区二区| 日韩一区二区三区三四区视频在线观看| 欧美日韩影院| 日韩精品一级中文字幕精品视频免费观看 | 蜜臀av一区二区在线观看| 欧美本精品男人aⅴ天堂| 亚洲欧洲一区二区天堂久久| 麻豆91免费观看| 久久精品在这里| 久久亚洲国产精品日日av夜夜| 成人性生交大合| 一区二区三区中文字幕电影| 欧美军同video69gay| 合欧美一区二区三区| 麻豆成人久久精品二区三区红| 久久精品视频一区二区三区| 国产精品手机视频| 国产精品自在欧美一区| 亚洲人成网站色在线观看| 欧美人动与zoxxxx乱| 一区二区在线视频观看| 韩国av一区二区三区在线观看| 中文字幕一区二区不卡| 欧美日韩国产在线播放网站| 黑人巨大精品欧美一区二区小视频 | 亚洲激情专区| 国产精品一二二区| 一区二区三区在线视频播放| 6080yy午夜一二三区久久| 亚洲欧洲精品一区二区| 国产乱人伦偷精品视频不卡| 亚洲人成伊人成综合网小说| 日韩欧美中文一区| 美女日韩在线中文字幕| 欧美福利专区| 国产一区二区三区| 亚洲一区二区三区三| 久久久三级国产网站| 日本道精品一区二区三区 | 免费日韩伦理电影| 中文字幕日韩av资源站| 欧美日韩一区国产| 国产欧美激情| 91欧美激情一区二区三区成人| 毛片av一区二区三区| 亚洲色图欧洲色图| 精品国产免费一区二区三区香蕉 | 欧美另类高清视频在线| 久久成人免费电影| 亚洲免费观看在线视频| 久久久久久亚洲综合影院红桃| 欧美在线观看视频在线| 亚洲人www| 亚洲欧美日韩在线| 精品国产污网站| 欧美日韩综合色| 一区二区高清| 国产精品久久7| 成人国产精品免费观看动漫| 免费美女久久99| 一区二区三区日韩| 国产欧美日韩卡一| 538在线一区二区精品国产| 制服丝袜亚洲色图| youjizz久久| 精品在线免费观看| 日本亚洲欧美天堂免费| 一区二区三区在线免费播放| 久久久久97国产精华液好用吗| 欧美视频一区二| 久久电影一区| 国产日韩欧美一区二区| 欧美日韩精品免费观看视一区二区 | 亚洲品质自拍视频| 久久久久88色偷偷免费| 欧美剧情电影在线观看完整版免费励志电影 | 欧美日韩久久一区二区| 久久精品日产第一区二区三区| 在线观看亚洲| 欧美精品二区| 91美女视频网站| 99久久精品国产毛片| av在线不卡网| 国产精品一区二区在线观看不卡| 蜜乳av一区二区| 日韩精品一卡二卡三卡四卡无卡| 一区二区在线免费| 亚洲制服丝袜av| 欧美一二三四区在线| 欧美视频一区二| 在线观看一区日韩| 色一区在线观看| 另类av一区二区| 免费久久99精品国产自在现线| 亚洲精品韩国| 亚洲麻豆av| 99精品免费| 国产视频一区在线观看一区免费| 激情久久婷婷| 黄色在线成人| 狠狠色综合一区二区| 91蜜桃免费观看视频| 午夜欧美视频| 国产一区二区中文字幕免费看| 欧美日韩p片| 一区久久精品| 国产精品久久国产三级国电话系列| 亚洲精品一级| 一区二区三区国产盗摄| 国产精品久久久久久久久久妞妞| 亚洲精品乱码久久久久久蜜桃麻豆 | 精品99视频| 欧美一区二区三区四区在线观看地址| a美女胸又www黄视频久久| 91欧美激情一区二区三区成人| 欧美xxx在线观看| 在线观看成人一级片| 99视频在线精品国自产拍免费观看| 在线视频精品一区| 99热在线精品观看| 国产麻豆综合| 色成年激情久久综合| 欧美三级资源在线| 69av一区二区三区| 337p日本欧洲亚洲大胆精品 | 日韩二区三区在线观看|