python多執行緒有用嗎 Python多執行緒理解

2021-10-13 13:44:06 字數 1031 閱讀 3326

前言

在寫python爬蟲的時候遇到了多執行緒,使用多執行緒的目的是降低抓取時間。接著我接觸了一些io概念,io就是input和ouput,資料進出cpu的意思。

資料從網線或網絡卡進入cpu算input(get請求得到原始碼),反之就是output,這是網路io。

資料從硬碟進入cpu也是input,反過來就是output(把資料write進檔案),這是磁碟io。

先不細究io的原理,只需要知道有io(io密集型任務),就用python多執行緒,提高效率。

概念怎麼理解執行緒:

執行緒可以是一整個py程式,也可以是py檔案裡的乙個函式。如果py程式或者函式開始執行了,你也可以說執行緒開始執行了。

上個圖接下來是併發和並行

python的多執行緒是併發還是並行呢?  答案是併發。

同一時間還是只幹一件事,跟單執行緒沒什麼兩樣,所以有大佬說python的多執行緒就雞肋。

不過.....對於io密集型任務,會大概率遇到阻塞(等待),cpu等待的時候就不做事,相當於浪費了。這裡使用多執行緒就有幫助。

掛起、競爭gil的操作是由系統排程的,我們不用管。掛起、競爭、另乙個執行緒開始執行,這個過程會消耗一點時間,稱切換時間

若切換時間<

最後乙個重要的概念是主線程、子執行緒

子執行緒其實就是你要併發(同一時間窗做很多次)的任務,比如get請求和write入檔案。

這些任務一般都會寫進乙個函式func或者類裡面,然後兩步走

thread  =  threading.thread(target =函式func,args=(引數1,引數2))    #用thread類包(封裝)起來

thread.start()  #start之後就開始跑了

等待,還有乙個東西join()、setdaemon(true)  阻塞和守護執行緒

join()  ==  當一些任務要先於另一些任務完成的時候,可以用

setdaemon   ==  當你覺得一些執行緒不重要的時候,可以設定守護執行緒。

對於非守護執行緒,就算主線程執行完了,也要等非守護程序完成才能退出

例項:乙個搶車票的例子

思考 讀書有用嗎?

幾年前,我的一位小侄女也問過我這樣的問題 大爺 伯伯,叔叔的意思 我每天有那般多的作業要做,可是我媽媽還要我堅持每天讀一點書,讀過之後我又記不住,我都不知道讀書的意義在 又有什麼用?我看著她那純真而又無辜的眼神,心裡不由得一疼,輕輕蹲了下來,摸了摸她的小腦袋,注視著她的眼眸,給她講了乙個故事。很久以...

大量背單詞有用嗎?

前言 從三年級開始接觸英語,到今為止已經14年了,可是自己的英語水平雖不至於茫然無知,可是真正做到和老外進行交流,還是有一定的困難的。不僅是老外,和小夥伴進行topic的時候,也有卡殼的時候,類似 成就感 怎麼說來著 這樣的事情屢見不鮮。歸根結底,認為詞彙量還是不夠是自己英語說不出口的原因,所以就開...

讀在職博士有用嗎?

1.資質方面 許多全球知名學府院校都有開設在職博士的教育課程,每年報名的人不在少數。越來越多的人都希望能在各知名學府讀在職博士,因為獲得的學位證書在全球通用,因此在職博士學位證書金量不言而喻。2.求職方面 現如今社會人才濟濟,想要在眾多求職者中脫穎而出,首要前提是你要有更高的學歷。在職博士一方面是比...