上一篇:關于多執行緒的那點事 -Python

哈嘍各位小伙伴,很快啊,小澤馬上就又更新了,速度簡直不要太快!

上回咱們不是說了怎么開多執行緒嘛,那同樣的,還有一個問題:
公司已經下班了,但是員工還在努力作業,
我們先來創建兩個員工:
# 匯入執行緒模塊
import threading
# 匯入休眠模塊
from time import sleep
# 員工A
def funcA(a):
for i in range(10):
print('{0}為作業狂!'.format(a))
sleep(0.3)
# 員工B
def funcB(a):
for i in range(20):
print('{0}也不能阻止我作業!'.format(a))
sleep(0.3)
這兩個員工呢,第一個是每隔0.3秒會作業一次,一共作業10次,也就是要3秒才可以下班,
第二個是每隔0.3秒作業一次,但是要作業20次!也就是要6秒才可以下班,

接著,我們再開兩個執行緒,并且讓他們跑起來,同時再給公司設定一個下班時間:
if __name__ == '__main__':
# 創建執行緒物件
thread_A = threading.Thread(target=funcA, args=('小明',))
thread_B = threading.Thread(target=funcB, kwargs={'a': '小紅'})
# 啟動執行緒
thread_A.start()
thread_B.start()
sleep(2)
print('下班了下班了,大家快走鴨!')
可以看到,我們創建了兩個執行緒,分別對應兩個員工,因為python讀代碼是從上往下讀嘛,所以只要這兩個執行緒一啟動,就會開始計時,等到2秒的時候,就會下班啦~
也就是程式按理來說應該就要結束了,畢竟下面沒有代碼了嘛~
看看效果:

可以看到,哪怕是公司已經說了要下班了,但是兩位員工還是非常勤奮努力的在作業哈,非常棒!
但是呢,我們想要的是公司一下班,員工立馬滾蛋~

這個時候就要用到守護執行緒了!!!
沒錯!!!!
跟行程是一毛一樣的!!!!!

那咋整啊,看我操作唄:
# # 創建執行緒物件
# thread_A = threading.Thread(target=funcA,args=('小明',))
# thread_B = threading.Thread(target=funcB,kwargs={'a':'小紅'})
# 創建執行緒物件,并且守護主執行緒
thread_A = threading.Thread(target=funcA, args=('小明',), daemon=True)
thread_B = threading.Thread(target=funcB, kwargs={'a': '小紅'}, daemon=True)
我們只需要在創建執行緒物件里面傳一個daemon=True就好啦!
這樣我們再來跑一次康康:

舒服了~

這樣就能做到,只要我們的主執行緒一關閉,主執行緒下面的子執行緒就全部跟著關閉,而不是等子執行緒都運行完再關閉!
那么,還有一個問題哈,就是如果我們要一次性啟動一萬個執行緒,那不是得寫一萬行?
所以這當然不行啊!
那就得教各位怎么快速的批量啟動執行緒:
if __name__ == '__main__':
# 回圈啟動10次執行緒,也就是開10個執行緒
for i in range(10):
thread = threading.Thread(target=funcA,args=('小明',))
thread.start()
是不是瞬間就頓悟了!
如果你還沒有悟到,沒關系,知道是這樣用的,就ok了~
畢竟牽扯到的都是基礎啦…

886~
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/249585.html
標籤:python
