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

極客小將

您現在的位置是:首頁 » python編程資訊

資訊內容

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

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

4Px少兒編程網-Scratch_Python_教程_免費兒童編程學習平臺

事實上,python 多線程另一個很重要的話題叫,GIL(Global Interpreter Lock,即全局解釋器鎖)。4Px少兒編程網-Scratch_Python_教程_免費兒童編程學習平臺

多線程不一定比單線程快

在Python中,可以通過多進程、多線程和多協程來實現多任務。難道多線程就一定比單線程快?4Px少兒編程網-Scratch_Python_教程_免費兒童編程學習平臺

下面我用一段代碼證明我自己得觀點。4Px少兒編程網-Scratch_Python_教程_免費兒童編程學習平臺

''' @Author: Runsen @微信公眾號: 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() # 第一次循環的時候join方法引起主線程阻塞,但第二個線程并沒有啟動,所以兩個線程是順序執行的 print("單線程順序執行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() # 兩個線程均已啟動,所以兩個線程是并發的 print("多線程執行total_time: {}".format(time.time() - start_time))if __name__ == "__main__": main1() main2()復制代碼

運行結果4Px少兒編程網-Scratch_Python_教程_免費兒童編程學習平臺

單線程順序執行total_time: 17.754502773284912多線程執行total_time: 20.01178550720215復制代碼

我怕你說我亂得出來得結果,我還是截個圖看清楚點4Px少兒編程網-Scratch_Python_教程_免費兒童編程學習平臺

4Px少兒編程網-Scratch_Python_教程_免費兒童編程學習平臺

這時,我懷疑:我的機器出問題了嗎?其實不是這樣,本質上來說Python 的線程失效了,沒有起到并行計算的作用。4Px少兒編程網-Scratch_Python_教程_免費兒童編程學習平臺

Python 的線程,的確封裝了底層的操作系統線程,在 Linux 系統里是 Pthread(全稱為 POSIX Thread),而在 Windows 系統里是 Windows Thread。另外,Python 的線程,也完全受操作系統管理,比如協調何時執行、管理內存資源、管理中斷等等。4Px少兒編程網-Scratch_Python_教程_免費兒童編程學習平臺

GIL不是Python的特性

GIL 的概念用簡單的一句話來解釋,就是任一時刻,無論線程多少,單一 CPython 解釋器只能執行一條字節碼。這個定義需要注意的點:4Px少兒編程網-Scratch_Python_教程_免費兒童編程學習平臺

首先需要明確的一點是GIL并不是Python的特性,它是在實現Python解析器(CPython)時所引入的一個概念。4Px少兒編程網-Scratch_Python_教程_免費兒童編程學習平臺

C++是一套語言(語法)標準,但是可以用不同的編譯器來編譯成可執行代碼。有名的編譯器例如GCC,INTEL C++,Visual C++等。4Px少兒編程網-Scratch_Python_教程_免費兒童編程學習平臺

Python也一樣,同樣一段代碼可以通過CPython,PyPy,Psyco等不同的Python執行環境來執行。4Px少兒編程網-Scratch_Python_教程_免費兒童編程學習平臺

其他 Python 解釋器不一定有 GIL。例如 Jython (JVM) 和 IronPython (CLR) 沒有 GIL,而 CPython,PyPy 有 GIL;4Px少兒編程網-Scratch_Python_教程_免費兒童編程學習平臺

因為CPython是大部分環境下默認的Python執行環境。所以在很多人的概念里CPython就是Python,也就想當然的把GIL歸結為Python語言的缺陷。所以這里要先明確一點:GIL并不是Python的特性,Python完全可以不依賴于GIL4Px少兒編程網-Scratch_Python_教程_免費兒童編程學習平臺

GIL本質就是一把互斥鎖

GIL本質就是一把互斥鎖,既然是互斥鎖,所有互斥鎖的本質都一樣,都是將并發運行變成串行,以此來控制同一時間內共享數據只能被一個任務所修改,進而保證數據安全。4Px少兒編程網-Scratch_Python_教程_免費兒童編程學習平臺

可以肯定的一點是:保護不同的數據的安全,就應該加不同的鎖。4Px少兒編程網-Scratch_Python_教程_免費兒童編程學習平臺

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

4Px少兒編程網-Scratch_Python_教程_免費兒童編程學習平臺

計算密集型

計算密集型任務的特點是要進行大量的計算,消耗CPU資源。4Px少兒編程網-Scratch_Python_教程_免費兒童編程學習平臺

我們先來看一個簡單的計算密集型示例: 4Px少兒編程網-Scratch_Python_教程_免費兒童編程學習平臺

''' @Author: Runsen @微信公眾號: 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復制代碼

這個是單線程, 時間是9s, 下面我們用兩個線程看看結果又如何:4Px少兒編程網-Scratch_Python_教程_免費兒童編程學習平臺

''' @Author: Runsen @微信公眾號: 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復制代碼

我們程序主要的操作就是在計算, CPU沒有等待, 而改為多線程后, 增加了線程后, 在線程之間頻繁的切換,增大了時間開銷, 時間當然會增加了。4Px少兒編程網-Scratch_Python_教程_免費兒童編程學習平臺

還有一種類型是IO密集型,涉及到網絡、磁盤IO的任務都是IO密集型任務,這類任務的特點是CPU消耗很少,任務的大部分時間都在等待IO操作完成(因為IO的速度遠遠低于CPU和內存的速度)。對于IO密集型任務,任務越多,CPU效率越高,但也有一個限度。常見的大部分任務都是IO密集型任務,比如Web應用。4Px少兒編程網-Scratch_Python_教程_免費兒童編程學習平臺

總結:對于io密集型工作(Python爬蟲),多線程可以大幅提高代碼效率。對CPU計算密集型(Python數據分析,機器學習,深度學習),多線程的效率可能比單線程還略低。所以,數據領域沒有多線程提高效率之說,只有將CPU提升到GPU,TPU來提升計算能力。4Px少兒編程網-Scratch_Python_教程_免費兒童編程學習平臺

相關免費學習推薦:python視頻教程4Px少兒編程網-Scratch_Python_教程_免費兒童編程學習平臺

以上就是多線程比單線程快,是真的嗎?的詳細內容,更多請關注少兒編程網其它相關文章!4Px少兒編程網-Scratch_Python_教程_免費兒童編程學習平臺

預約試聽課

已有385人預約都是免費的,你也試試吧...

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

        国产精品自拍合集| 亚洲 激情 在线| 小明看看成人免费视频| 日韩精品久久一区二区| jizz欧美性11| 可以免费在线看黄的网站| 国产激情片在线观看| 一区二区三区 日韩| 免费成人在线视频网站| 欧美性受黑人性爽| 九九热99视频| 波多野结衣天堂| 国产精品亚洲αv天堂无码| 日韩专区第三页| 国产福利片一区二区| 日本中文字幕观看| 一个色综合久久| 亚洲性生活网站| 欧美一级片中文字幕| 免费成人午夜视频| 国产一区二区视频播放| 天堂…中文在线最新版在线| 大荫蒂性生交片| 99视频精品全部免费看| 波多野结衣在线免费观看| 一个色综合久久| 久久久久久久高清| 欧美激情第3页| 污视频网址在线观看| 最新天堂在线视频| 在线免费观看av网| 91看片破解版| 蜜桃网站在线观看| 9色porny| 成年人在线看片| 免费av不卡在线| ijzzijzzij亚洲大全| 在线观看污视频| 国产午夜精品视频一区二区三区| 黄色一级片av| 日本免费不卡一区二区| av污在线观看| 国产精品12p| 麻豆中文字幕在线观看| 日本xxx免费| 日日鲁鲁鲁夜夜爽爽狠狠视频97 | 青青在线免费观看| www.夜夜爱| 国产一区亚洲二区三区| 免费裸体美女网站| 黄色一级片免费播放| 国产情侣第一页| 日韩 欧美 高清| 欧美性受xxxx黑人猛交88| 91猫先生在线| 国产999免费视频| 欧美成人高潮一二区在线看| 少妇高清精品毛片在线视频| 老司机av福利| 日韩在线综合网| 亚洲视频一二三四| 免费国产黄色网址| 欧美大尺度做爰床戏| 欧美 日韩 国产精品| 欧美性猛交久久久乱大交小说| 亚洲图片 自拍偷拍| 蜜臀av午夜一区二区三区 | 亚洲高清视频免费| av免费观看国产| 三级av免费看| 久久综合久久色| 免费超爽大片黄| 韩国黄色一级大片| 天堂在线资源视频| 国产日产欧美视频| 97超碰在线人人| 亚洲五码在线观看视频| 四季av一区二区三区| 91看片就是不一样| 无码专区aaaaaa免费视频| 在线成人免费av| 中文av一区二区三区| 欧美黄色一级片视频| 久操网在线观看| 91九色国产ts另类人妖| 奇米影视四色在线| 国产精品igao| 蜜臀av午夜一区二区三区| 日本黄色片一级片| 久久最新免费视频| 特级西西人体www高清大胆| 日本成人xxx| 亚洲午夜精品一区| 在线不卡一区二区三区| 任你操这里只有精品| 美女黄色片视频| 欧美婷婷精品激情| 一区二区成人网| 国产一级做a爰片久久| 亚洲一区日韩精品| 日本一二区免费| 亚洲一二区在线观看| 亚洲女人在线观看| 日韩在线视频在线| 91丨porny丨探花| 激情综合网婷婷| 91福利国产成人精品播放| 黄大色黄女片18第一次| 国产三级中文字幕| 日韩精品一区在线视频| 欧美一级视频免费看| 国产乱子伦农村叉叉叉| 狠狠热免费视频| 久久久精品视频国产| 人人妻人人澡人人爽欧美一区| 日韩伦理在线免费观看| 另类小说第一页| 香蕉视频xxxx| 黄色网页免费在线观看| 日本 片 成人 在线| 日韩久久久久久久久久久久| 日韩av资源在线| 亚洲精品在线网址| 国产69精品久久久久久久| 日本人视频jizz页码69| 日韩精品在线视频免费观看| 成人精品小视频| 成人在线视频一区二区三区| 国产xxxxx视频| 男人添女人下部视频免费| 宅男噜噜噜66国产免费观看| 欧美日韩亚洲国产成人| 北条麻妃av高潮尖叫在线观看| 影音先锋成人资源网站| 一本久道综合色婷婷五月| 欧美在线观看黄| 性chinese极品按摩| 日韩在线综合网| 中文字幕第50页| 久久国产这里只有精品| 拔插拔插海外华人免费| www.成人黄色| 亚洲成人福利在线观看| 日本福利视频一区| 三上悠亚免费在线观看| 毛葺葺老太做受视频| 丝袜人妻一区二区三区| 成人污网站在线观看| 在线观看日本一区二区| 手机看片福利盒子久久| 成人小视频在线看| 成人一区二区免费视频| 日本五级黄色片| 青青在线免费视频| gogogo免费高清日本写真| 日本黄色福利视频| jizz欧美性11| 97超碰成人在线| 亚洲综合欧美激情| 久久久久久久久久久久91| 免费激情视频在线观看| 蜜臀久久99精品久久久酒店新书| www一区二区www免费| 看av免费毛片手机播放| 国产伦精品一区二区三区四区视频_| 偷拍盗摄高潮叫床对白清晰| 91精品视频国产| 一级做a免费视频| 小早川怜子一区二区三区| 一级黄色片国产| 日本免费在线视频观看| 红桃一区二区三区| 国产毛片久久久久久国产毛片| 妞干网在线播放| 久久久一本二本三本| 国产裸体舞一区二区三区| 日韩av片网站| 天天综合成人网| 黄色成人在线免费观看| 少妇无码av无码专区在线观看 | 男女啪啪免费视频网站| 日日摸日日碰夜夜爽av| 亚洲成人天堂网| 亚洲五月激情网| 国产成人艳妇aa视频在线 | 免费欧美一级视频| 亚洲狼人综合干| 国产性生活一级片| www插插插无码视频网站| 日本精品一区二区三区四区| 天堂一区在线观看| 国产精品久久久影院| 色综合久久久久无码专区| www.com黄色片| 男人的天堂avav| www.这里只有精品| 激情五月婷婷六月| 国产又黄又爽免费视频| 爽爽爽在线观看| 国产精品一区二区免费在线观看|