關於多執行緒的那點事之番外篇 Python

2021-10-14 18:39:55 字數 2779 閱讀 9287

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

上回咱們不是說了怎麼開多執行緒嘛,那同樣的,還有乙個問題:

公司已經下班了,但是員工還在努力工作。

我們先來建立兩個員工:

# 匯入執行緒模組

import threading

# 匯入休眠模組

from time import sleep

# 員工a

deffunca

(a):

for i in

range(10

):print

('為工作狂!'

.format

(a))

sleep(

0.3)

# 員工b

deffuncb

(a):

for i in

range(20

):print

('也不能阻止我工作!'

.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=

)# 啟動執行緒

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=)

# 建立執行緒物件,並且守護主線程

thread_a = threading.thread(target=funca, args=

('小明',)

, daemon=

true

) thread_b = threading.thread(target=funcb, kwargs=

, daemon=

true

)

我們只需要在建立執行緒物件裡面傳乙個daemon=true就好啦!

這樣我們再來跑一次康康:

舒服了~

這樣就能做到,只要我們的主線程一關閉,主線程下面的子執行緒就全部跟著關閉,而不是等子執行緒都執行完再關閉!

那麼,還有乙個問題哈,就是如果我們要一次性啟動一萬個執行緒,那不是得寫一萬行?

所以這當然不行啊!

那就得教各位怎麼快速的批量啟動執行緒:

if __name__ ==

'__main__'

:# 迴圈啟動10次執行緒,也就是開10個執行緒

for i in

range(10

):thread = threading.thread(target=funca,args=

('小明',)

) thread.start(

)

是不是瞬間就頓悟了!

如果你還沒有悟到,沒關係,知道是這樣用的,就ok了~

畢竟牽扯到的都是基礎啦…

多執行緒的那點兒事(之讀寫鎖)

在編寫多執行緒的時候,有一種情況是十分常見的。那就是,有些公共資料修改的機會比較少。相比較改寫,它們讀的機會反而高的多。通常而言,在讀的過程中,往往伴隨著查詢的操作,中間耗時很長。給這種 段加鎖,會極大地降低我們程式的效率。那麼有沒有一種方法,可以專門處理這種多讀少寫的情況呢?有,那就是讀寫鎖。1 ...

多執行緒的那點兒事(之讀寫鎖)

在編寫多執行緒的時候,有一種情況是十分常見的。那就是,有些公共資料修改的機會比較少。相比較改寫,它們讀的機會反而高的多。通常而言,在讀的過程中,往往伴隨著查詢的操作,中間耗時很長。給這種 段加鎖,會極大地降低我們程式的效率。那麼有沒有一種方法,可以專門處理這種多讀少寫的情況呢?有,那就是讀寫鎖。1 ...

多執行緒的那點兒事(之讀寫鎖)

在編寫多執行緒的時候,有一種情況是十分常見的。那就是,有些公共資料修改的機會比較少。相比較改寫,它們讀的機會反而高的多。通常而言,在讀的過程中,往往伴隨著查詢的操作,中間耗時很長。給這種 段加鎖,會極大地降低我們程式的效率。那麼有沒有一種方法,可以專門處理這種多讀少寫的情況呢?有,那就是讀寫鎖。1 ...