<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
像排隊一樣,從頭到尾排成一排,還可以有人繼續往後排隊,這就是佇列。
這裡學委想說的是Queue
這個類, 它是queue
這個內建模組內的一個類。
import queue q = queue.Queue(5) #可以傳入引數指定佇列大小 queue.Queue()# 不傳或者給0或者<0的數位則建立一個無限長度的佇列
它提供了很多函數,下面幾個函數,我們使用的比較多:
get
: 獲取並移除隊頭元素,就是出隊put
: 往佇列末尾加入元素,也就是後來者排隊qsize
: 獲取佇列的長度empty
: 佇列空了,沒有人在排了full
: 佇列滿了。看著比較枯燥,學委畫了下圖展示:
這個佇列put了3次,依次放入:持續學習,持續開發,我雷學委。佇列長度為3
準備了下面的程式碼:
import queue q = queue.Queue(5) print("學委粉絲佇列:", q) print("空隊,學委粉絲佇列大小:", q.qsize()) print("空佇列?", q.empty()) for i in range(5): q.put(i) print("佇列滿了?", q.full()) print("排滿了,學委粉絲佇列大小:", q.qsize()) while not q.empty(): print("粉絲 %s 出隊點贊!" % q.get()) print("最後,學委粉絲佇列大小:", q.qsize())
這段程式碼建立了一個長的為5的佇列。
然後一個迴圈寫滿佇列,接著再依此出隊,粉絲出隊點贊。
下面是執行效果:
是不是很簡單。
前面幾篇文章,碰到下面的程式碼(反覆讀寫共用變數)結果總是出乎依賴!
amount = 100 def transfer(money): global amount for i in range(100000): amount += money
如果我們對佇列進行反覆讀寫,會不會出現問題呢?
不妨,寫個程式碼驗收一下:
import queue import threading xuewei_fans_q = queue.Queue() def transfer(money): for i in range(100000): xuewei_fans_q.put(money) xuewei_fans_q.get() # 建立4個任務重複給學委加關注/脫粉(還是希望各位程式設計的明日之星跟著學習,共同進步!) t_group = [] for i in range(10): t = threading.Thread(target=lambda: transfer(-1)) t_group.append(t) t.start() t = threading.Thread(target=lambda: transfer(1)) t_group.append(t) t.start() t = threading.Thread(target=lambda: transfer(-1)) t_group.append(t) t.start() t = threading.Thread(target=lambda: transfer(1)) t_group.append(t) t.start() for t in t_group: t.join() print("-" * 16) print("活躍執行緒數:", threading.active_count()) print("活躍執行緒:", threading.current_thread().name) #反覆對佇列進行新增資料,移除資料,佇列最後清零了 print("學委粉絲佇列:", xuewei_fans_q.qsize())
不管執行多少次,佇列(希望是黑粉佇列)都為0元素。
總結:
本篇學委分享了一個執行緒安全的佇列Queue,這個非常重要!但是佇列Queue這個類是執行緒安全的,這個是經過驗證的
到此這篇關於Python執行緒之執行緒安全的佇列的文章就介紹到這了,更多相關Python執行緒安全佇列內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45