国产乱子伦高清露脸对白-国产精品欧美久久久久天天影视-国产91视频一区-亚洲欧美日产综合在线网-黄视频网站在线看-国产欧美亚洲精品第1页-亚洲www在线-大学生女人三级在线播放-日本在线视频www鲁啊鲁-国产成人精品一区二区仙踪林-69精品欧美一区二区三区-成人欧美亚洲-日本污污网站-中国妞xxxhd露脸偷拍视频-国产精品aⅴ在线观看-精品中文字幕在线

極客小將

您現(xiàn)在的位置是:首頁 » python編程資訊

資訊內(nèi)容

多線程比單線程快,是真的嗎?

極客小將2021-01-19-
簡(jiǎn)介pyrhon視頻教程欄目介紹多線程是否真的比單線程快。事實(shí)上,Python多線程另一個(gè)很重要的話題叫,GIL(GlobalInterpreterLock,即全局解釋器鎖)。多線程不一定比單線程快在Python中,可以通過多進(jìn)程、多線程和多協(xié)程來實(shí)現(xiàn)多任務(wù)。難道多線程就一定比單線程快?下面我用一段代碼
www.pxcodes.com pyrhon視頻教程欄目介紹多線程是否真的比單線程快。

4Px少兒編程網(wǎng)-Scratch_Python_教程_免費(fèi)兒童編程學(xué)習(xí)平臺(tái)

事實(shí)上,python 多線程另一個(gè)很重要的話題叫,GIL(Global Interpreter Lock,即全局解釋器鎖)。4Px少兒編程網(wǎng)-Scratch_Python_教程_免費(fèi)兒童編程學(xué)習(xí)平臺(tái)

多線程不一定比單線程快

在Python中,可以通過多進(jìn)程、多線程和多協(xié)程來實(shí)現(xiàn)多任務(wù)。難道多線程就一定比單線程快?4Px少兒編程網(wǎng)-Scratch_Python_教程_免費(fèi)兒童編程學(xué)習(xí)平臺(tái)

下面我用一段代碼證明我自己得觀點(diǎn)。4Px少兒編程網(wǎng)-Scratch_Python_教程_免費(fèi)兒童編程學(xué)習(xí)平臺(tái)

''' @Author: Runsen @微信公眾號(hào): Python之王 @博客: https://blog.csdn.net/weixin_44510615 @Date: 2020/6/4 '''import threading, timedef my_counter(): i = 0 for _ in range(100000000): i = i+1 return Truedef main1(): start_time = time.time() for tid in range(2): t = threading.Thread(target=my_counter) t.start() t.join() # 第一次循環(huán)的時(shí)候join方法引起主線程阻塞,但第二個(gè)線程并沒有啟動(dòng),所以兩個(gè)線程是順序執(zhí)行的 print("單線程順序執(zhí)行total_time: {}".format(time.time() - start_time))def main2(): thread_ary = {} start_time = time.time() for tid in range(2): t = threading.Thread(target=my_counter) t.start() thread_ary[tid] = t for i in range(2): thread_ary[i].join() # 兩個(gè)線程均已啟動(dòng),所以兩個(gè)線程是并發(fā)的 print("多線程執(zhí)行total_time: {}".format(time.time() - start_time))if __name__ == "__main__": main1() main2()復(fù)制代碼

運(yùn)行結(jié)果4Px少兒編程網(wǎng)-Scratch_Python_教程_免費(fèi)兒童編程學(xué)習(xí)平臺(tái)

單線程順序執(zhí)行total_time: 17.754502773284912多線程執(zhí)行total_time: 20.01178550720215復(fù)制代碼

我怕你說我亂得出來得結(jié)果,我還是截個(gè)圖看清楚點(diǎn)4Px少兒編程網(wǎng)-Scratch_Python_教程_免費(fèi)兒童編程學(xué)習(xí)平臺(tái)

4Px少兒編程網(wǎng)-Scratch_Python_教程_免費(fèi)兒童編程學(xué)習(xí)平臺(tái)

這時(shí),我懷疑:我的機(jī)器出問題了嗎?其實(shí)不是這樣,本質(zhì)上來說Python 的線程失效了,沒有起到并行計(jì)算的作用。4Px少兒編程網(wǎng)-Scratch_Python_教程_免費(fèi)兒童編程學(xué)習(xí)平臺(tái)

Python 的線程,的確封裝了底層的操作系統(tǒng)線程,在 Linux 系統(tǒng)里是 Pthread(全稱為 POSIX Thread),而在 Windows 系統(tǒng)里是 Windows Thread。另外,Python 的線程,也完全受操作系統(tǒng)管理,比如協(xié)調(diào)何時(shí)執(zhí)行、管理內(nèi)存資源、管理中斷等等。4Px少兒編程網(wǎng)-Scratch_Python_教程_免費(fèi)兒童編程學(xué)習(xí)平臺(tái)

GIL不是Python的特性

GIL 的概念用簡(jiǎn)單的一句話來解釋,就是任一時(shí)刻,無論線程多少,單一 CPython 解釋器只能執(zhí)行一條字節(jié)碼。這個(gè)定義需要注意的點(diǎn):4Px少兒編程網(wǎng)-Scratch_Python_教程_免費(fèi)兒童編程學(xué)習(xí)平臺(tái)

首先需要明確的一點(diǎn)是GIL并不是Python的特性,它是在實(shí)現(xiàn)Python解析器(CPython)時(shí)所引入的一個(gè)概念。4Px少兒編程網(wǎng)-Scratch_Python_教程_免費(fèi)兒童編程學(xué)習(xí)平臺(tái)

C++是一套語言(語法)標(biāo)準(zhǔn),但是可以用不同的編譯器來編譯成可執(zhí)行代碼。有名的編譯器例如GCC,INTEL C++,Visual C++等。4Px少兒編程網(wǎng)-Scratch_Python_教程_免費(fèi)兒童編程學(xué)習(xí)平臺(tái)

Python也一樣,同樣一段代碼可以通過CPython,PyPy,Psyco等不同的Python執(zhí)行環(huán)境來執(zhí)行。4Px少兒編程網(wǎng)-Scratch_Python_教程_免費(fèi)兒童編程學(xué)習(xí)平臺(tái)

其他 Python 解釋器不一定有 GIL。例如 Jython (JVM) 和 IronPython (CLR) 沒有 GIL,而 CPython,PyPy 有 GIL;4Px少兒編程網(wǎng)-Scratch_Python_教程_免費(fèi)兒童編程學(xué)習(xí)平臺(tái)

因?yàn)镃Python是大部分環(huán)境下默認(rèn)的Python執(zhí)行環(huán)境。所以在很多人的概念里CPython就是Python,也就想當(dāng)然的把GIL歸結(jié)為Python語言的缺陷。所以這里要先明確一點(diǎn):GIL并不是Python的特性,Python完全可以不依賴于GIL4Px少兒編程網(wǎng)-Scratch_Python_教程_免費(fèi)兒童編程學(xué)習(xí)平臺(tái)

GIL本質(zhì)就是一把互斥鎖

GIL本質(zhì)就是一把互斥鎖,既然是互斥鎖,所有互斥鎖的本質(zhì)都一樣,都是將并發(fā)運(yùn)行變成串行,以此來控制同一時(shí)間內(nèi)共享數(shù)據(jù)只能被一個(gè)任務(wù)所修改,進(jìn)而保證數(shù)據(jù)安全。4Px少兒編程網(wǎng)-Scratch_Python_教程_免費(fèi)兒童編程學(xué)習(xí)平臺(tái)

可以肯定的一點(diǎn)是:保護(hù)不同的數(shù)據(jù)的安全,就應(yīng)該加不同的鎖。4Px少兒編程網(wǎng)-Scratch_Python_教程_免費(fèi)兒童編程學(xué)習(xí)平臺(tái)

GIL 的工作原理:比如下面這張圖,就是一個(gè) GIL 在 Python 程序的工作示例。其中,Thread 1、2、3 輪流執(zhí)行,每一個(gè)線程在開始執(zhí)行時(shí),都會(huì)鎖住 GIL,以阻止別的線程執(zhí)行;同樣的,每一個(gè)線程執(zhí)行完一段后,會(huì)釋放 GIL,以允許別的線程開始利用資源。4Px少兒編程網(wǎng)-Scratch_Python_教程_免費(fèi)兒童編程學(xué)習(xí)平臺(tái)

4Px少兒編程網(wǎng)-Scratch_Python_教程_免費(fèi)兒童編程學(xué)習(xí)平臺(tái)

計(jì)算密集型

計(jì)算密集型任務(wù)的特點(diǎn)是要進(jìn)行大量的計(jì)算,消耗CPU資源。4Px少兒編程網(wǎng)-Scratch_Python_教程_免費(fèi)兒童編程學(xué)習(xí)平臺(tái)

我們先來看一個(gè)簡(jiǎn)單的計(jì)算密集型示例: 4Px少兒編程網(wǎng)-Scratch_Python_教程_免費(fèi)兒童編程學(xué)習(xí)平臺(tái)

''' @Author: Runsen @微信公眾號(hào): Python之王 @博客: https://blog.csdn.net/weixin_44510615 @Date: 2020/6/4 '''import time COUNT = 50_000_000def count_down(): global COUNT while COUNT > 0: COUNT -= 1s = time.perf_counter() count_down() c = time.perf_counter() - s print('time taken in seconds - >:', c) time taken in seconds - >: 9.2957003復(fù)制代碼

這個(gè)是單線程, 時(shí)間是9s, 下面我們用兩個(gè)線程看看結(jié)果又如何:4Px少兒編程網(wǎng)-Scratch_Python_教程_免費(fèi)兒童編程學(xué)習(xí)平臺(tái)

''' @Author: Runsen @微信公眾號(hào): Python之王 @博客: https://blog.csdn.net/weixin_44510615 @Date: 2020/6/4 '''import timefrom threading import Thread COUNT = 50_000_000def count_down(): global COUNT while COUNT > 0: COUNT -= 1s = time.perf_counter() t1 = Thread(target=count_down) t2 = Thread(target=count_down) t1.start() t2.start() t1.join() t2.join() c = time.perf_counter() - s print('time taken in seconds - >:', c) time taken in seconds - >: 17.110625復(fù)制代碼

我們程序主要的操作就是在計(jì)算, CPU沒有等待, 而改為多線程后, 增加了線程后, 在線程之間頻繁的切換,增大了時(shí)間開銷, 時(shí)間當(dāng)然會(huì)增加了。4Px少兒編程網(wǎng)-Scratch_Python_教程_免費(fèi)兒童編程學(xué)習(xí)平臺(tái)

還有一種類型是IO密集型,涉及到網(wǎng)絡(luò)、磁盤IO的任務(wù)都是IO密集型任務(wù),這類任務(wù)的特點(diǎn)是CPU消耗很少,任務(wù)的大部分時(shí)間都在等待IO操作完成(因?yàn)镮O的速度遠(yuǎn)遠(yuǎn)低于CPU和內(nèi)存的速度)。對(duì)于IO密集型任務(wù),任務(wù)越多,CPU效率越高,但也有一個(gè)限度。常見的大部分任務(wù)都是IO密集型任務(wù),比如Web應(yīng)用。4Px少兒編程網(wǎng)-Scratch_Python_教程_免費(fèi)兒童編程學(xué)習(xí)平臺(tái)

總結(jié):對(duì)于io密集型工作(Python爬蟲),多線程可以大幅提高代碼效率。對(duì)CPU計(jì)算密集型(Python數(shù)據(jù)分析,機(jī)器學(xué)習(xí),深度學(xué)習(xí)),多線程的效率可能比單線程還略低。所以,數(shù)據(jù)領(lǐng)域沒有多線程提高效率之說,只有將CPU提升到GPU,TPU來提升計(jì)算能力。4Px少兒編程網(wǎng)-Scratch_Python_教程_免費(fèi)兒童編程學(xué)習(xí)平臺(tái)

相關(guān)免費(fèi)學(xué)習(xí)推薦:python視頻教程4Px少兒編程網(wǎng)-Scratch_Python_教程_免費(fèi)兒童編程學(xué)習(xí)平臺(tái)

以上就是多線程比單線程快,是真的嗎?的詳細(xì)內(nèi)容,更多請(qǐng)關(guān)注少兒編程網(wǎng)其它相關(guān)文章!4Px少兒編程網(wǎng)-Scratch_Python_教程_免費(fèi)兒童編程學(xué)習(xí)平臺(tái)

預(yù)約試聽課

已有385人預(yù)約都是免費(fèi)的,你也試試吧...

国产乱子伦高清露脸对白-国产精品欧美久久久久天天影视-国产91视频一区-亚洲欧美日产综合在线网-黄视频网站在线看-国产欧美亚洲精品第1页-亚洲www在线-大学生女人三级在线播放-日本在线视频www鲁啊鲁-国产成人精品一区二区仙踪林-69精品欧美一区二区三区-成人欧美亚洲-日本污污网站-中国妞xxxhd露脸偷拍视频-国产精品aⅴ在线观看-精品中文字幕在线

        成人免费xxxxx在线视频| 日本一本二本在线观看| 日韩手机在线观看视频| 五月天国产视频| 不卡av免费在线| 久久亚洲中文字幕无码| 国产欧美自拍视频| 日韩福利视频在线| 毛片av免费在线观看| 成人黄色片免费| 国产三级中文字幕| www.污污视频| 天天干天天色天天干| 91最新在线观看| 国产成人亚洲精品无码h在线| 男人添女人荫蒂免费视频| 做爰高潮hd色即是空| 福利视频999| 国产高清av片| 一区二区三区四区毛片| a在线观看免费视频| 无限资源日本好片| 热久久久久久久久| 国产又粗又硬又长| 喜爱夜蒲2在线| av免费看网址| 日本成年人网址| 91日韩视频在线观看| 欧美日韩在线成人| 一区二区成人网| 91精品999| 久久亚洲a v| 国产免费黄色av| 国产精品入口免费软件| 国产三级精品三级在线| 国产一二三四五| 久久视频这里有精品| 春日野结衣av| 亚洲天堂国产视频| 国产乱子伦精品视频| 日韩网址在线观看| 极品粉嫩美女露脸啪啪| 黄色片免费在线观看视频| 欧美极品少妇无套实战| 国产成人无码一二三区视频| 手机视频在线观看| 国产女人18毛片| 美女福利视频在线| 日韩欧美中文在线视频| 精品人妻少妇一区二区| 奇米影音第四色| 狠狠噜天天噜日日噜| 成人综合视频在线| 香蕉视频在线网址| 激情网站五月天| 99久久99久久精品| 另类小说第一页| www.好吊操| 女同激情久久av久久| 波多野结衣之无限发射| 中文字幕22页| 99色精品视频| 国产人妻互换一区二区| 日本一本二本在线观看| 日本丰满少妇黄大片在线观看| 日韩欧美视频网站| 亚洲免费av网| 久热精品在线观看视频| 人妻少妇精品无码专区二区| 国产精品99久久久久久大便| 欧美激情成人网| 老太脱裤让老头玩ⅹxxxx| 中文字幕中文在线| 日韩精品一区二区三区不卡| 国产一线二线三线女| 亚洲精品免费一区亚洲精品免费精品一区 | 亚洲a级黄色片| 国产亚洲精品网站| 丰满人妻一区二区三区53号| 色91精品久久久久久久久| www.超碰com| 国产中文字幕免费观看| 欧美久久久久久久久久久久久久| 亚洲第一精品区| 国产精品久久久久久9999| 午夜激情av在线| 999精品视频在线| 激情内射人妻1区2区3区| 91传媒久久久| 国产一级不卡毛片| 无人在线观看的免费高清视频 | 精品成在人线av无码免费看| 久久久久久久久久久久久国产| 久久久久久综合网| 手机在线观看日韩av| 国产又粗又长又爽又黄的视频| 看看黄色一级片| 亚洲涩涩在线观看| 永久av免费在线观看| 亚洲区成人777777精品| 屁屁影院ccyy国产第一页| 欧美大黑帍在线播放| 久在线观看视频| 91n.com在线观看| 亚洲精品第三页| 中文字幕の友人北条麻妃| 乱熟女高潮一区二区在线| 欧美国产日韩激情| 欧美精品色婷婷五月综合| 91极品尤物在线播放国产| 天天影视色综合| www.国产亚洲| 日韩免费高清在线| 欧美视频亚洲图片| 国产黄色片免费在线观看| 久章草在线视频| 天天色天天综合网| 久操网在线观看| wwwwwxxxx日本| 日韩小视频网站| 九色91popny| 国产精品三级一区二区| 日本中文字幕片| 欧美性受黑人性爽| 看欧美ab黄色大片视频免费| av动漫免费观看| 可以免费观看av毛片| gogogo免费高清日本写真| 日韩av片在线看| 久久免费一级片| jizz欧美激情18| 91免费黄视频| 中文字幕剧情在线观看| 波多野结衣家庭教师视频| 午夜探花在线观看| 天天综合网日韩| 国产一区二区网| 国产树林野战在线播放| 美女少妇一区二区| 奇米精品一区二区三区| 97精品国产97久久久久久粉红| 亚洲视频在线观看一区二区三区| 欧美亚洲色图视频| 亚洲理论中文字幕| mm131国产精品| 波多野结衣作品集| 欧美日韩精品在线一区二区| 国产女人18毛片| 麻豆md0077饥渴少妇| 亚洲第一色av| 国产九九在线观看| 日本va中文字幕| 欧美 日韩精品| aa在线免费观看| 91视频 -- 69xx| 久久亚洲中文字幕无码| 亚洲精品天堂成人片av在线播放| 日日干日日操日日射| 国产又大又黄又猛| 亚洲一级免费在线观看| 亚洲一区在线不卡| www亚洲成人| 天天干天天色天天干| 爱爱爱爱免费视频| 天天操精品视频| 毛片毛片毛片毛片毛| 桥本有菜av在线| 国产资源第一页| 亚洲国产成人精品无码区99| 国产精品www在线观看| 欧美这里只有精品| 国产特级淫片高清视频| 欧美三级午夜理伦三级| 国产一级片黄色| 人人爽人人爽av| 2022中文字幕| 免费在线激情视频| 狠狠躁狠狠躁视频专区| 国产成人美女视频| 免费的一级黄色片| 免费无码av片在线观看| 亚洲国产精品毛片av不卡在线| 天天操,天天操| 欧美日韩午夜爽爽| 欧美日韩黄色一级片| 日本中文字幕高清| eeuss中文| 国产成人无码av在线播放dvd| 亚洲天堂网2018| 欧美一级视频免费看| 四虎永久在线精品无码视频| 女人高潮一级片| 国产无限制自拍| 天天看片天天操| 99爱视频在线| 亚洲免费av网| 天天干在线影院| 成人在线免费观看视频网站| 九九视频精品在线观看| 国产制服91一区二区三区制服|