最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

python3爬蟲GIL修改多線程實例講解

 更新時間:2020年11月24日 14:42:37   作者:小妮淺淺  
在本篇內(nèi)容里小編給大家整理的是一篇關(guān)于python3爬蟲GIL修改多線程實例講解內(nèi)容,需要的朋友們可以參考下。

我們打開程序后,會發(fā)現(xiàn)電腦的內(nèi)存和cpu發(fā)生了變化。在對于前者上面,自然是希望內(nèi)容占用小,cpu的利用越高越好。那有沒有什么方法可以讓我們的cpu達(dá)到滿狀態(tài)的運行效果呢?這就得用到我們所學(xué)的多線程中的知識了,再正式開始講解之前,我們先來說說操作的思路吧,然后進(jìn)行代碼對比。

我們都知道,比方我有一個4核的CPU,那么這樣一來,在單位時間內(nèi)每個核只能跑一個線程,然后時間片輪轉(zhuǎn)切換。但是Python不一樣,它不管你有幾個核,單位時間多個核只能跑一個線程,然后時間片輪轉(zhuǎn)。看起來很不可思議?但是這就是GIL搞的鬼。任何Python線程執(zhí)行前,必須先獲得GIL鎖,然后,每執(zhí)行100條字節(jié)碼,解釋器就自動釋放GIL鎖,讓別的線程有機(jī)會執(zhí)行。這個GIL全局鎖實際上把所有線程的執(zhí)行代碼都給上了鎖,所以,多線程在Python中只能交替執(zhí)行,即使100個線程跑在100核CPU上,也只能用到1個核。通常我們用的解釋器是官方實現(xiàn)的CPython,要真正利用多核,除非重寫一個不帶GIL的解釋器。我們不妨做個試驗:

#coding=utf-8
from multiprocessing import Pool
from threading import Thread
from multiprocessing import Process
def loop():
  while True:
    pass
if __name__ == '__main__':
  for i in range(3):
    t = Thread(target=loop)
    t.start()
  while True:
    pass

我的電腦是4核,所以我開了4個線程,看一下CPU資源占有率:

 

我們發(fā)現(xiàn)CPU利用率并沒有占滿,大致相當(dāng)于單核水平。

而如果我們變成進(jìn)程呢?

我們改一下代碼:

#coding=utf-8
from multiprocessing import Pool
from threading import Thread
from multiprocessing import Process
def loop():
  while True:
    pass
if __name__ == '__main__':
  for i in range(3):
    t = Process(target=loop)
    t.start()
    Pass

結(jié)果直接飆到了100%,說明進(jìn)程是可以利用多核的!

以上就是python3爬蟲GIL修改多線程實例講解的詳細(xì)內(nèi)容,更多關(guān)于python3爬蟲中的GIL修改多線程的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Python讀取csv文件做K-means分析詳情

    Python讀取csv文件做K-means分析詳情

    這篇文章主要介紹了Python讀取csv文件做K-means分析詳情,基于時間序列的分析2D讀取時間列和高程做一下分析。下文更多詳細(xì)介紹需要的小伙伴可以參考一下
    2022-03-03
  • 快速入手Python字符編碼

    快速入手Python字符編碼

    本文不談復(fù)雜的理論,就經(jīng)驗教大家字符處理八字真言:確定編碼,同類交互。教大家快速戰(zhàn)勝Python字符編碼。
    2016-08-08
  • 入門tensorflow教程之TensorBoard可視化模型訓(xùn)練

    入門tensorflow教程之TensorBoard可視化模型訓(xùn)練

    在本篇文章中,主要介紹 了TensorBoard 的基礎(chǔ)知識,并了解如何可視化訓(xùn)練模型中的一些基本信息,希望對大家的TensorBoard可視化模型訓(xùn)練有所幫助
    2021-08-08
  • python學(xué)習(xí)之whl文件解釋與安裝詳解

    python學(xué)習(xí)之whl文件解釋與安裝詳解

    whl格式本質(zhì)上是一個壓縮包,里面包含了py文件,以及經(jīng)過編譯的pyd文件,下面這篇文章主要給大家介紹了關(guān)于python學(xué)習(xí)之whl文件解釋與安裝的相關(guān)資料,文中通過實例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-09-09
  • Python虛擬環(huán)境與依賴管理使用方法全指南

    Python虛擬環(huán)境與依賴管理使用方法全指南

    這篇文章主要介紹了如何使用虛擬環(huán)境和pip來管理Python項目的依賴和包版本,虛擬環(huán)境可以幫助隔離不同項目的依賴,避免版本沖突,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2025-01-01
  • Python hasattr函數(shù)的具體使用

    Python hasattr函數(shù)的具體使用

    本文主要介紹了Python hasattr函數(shù)的具體使用,包括基本用法、返回值、應(yīng)用場景,文中通過示例代碼介紹的非常詳細(xì),需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2024-02-02
  • Python中全局變量和局部變量的理解與區(qū)別

    Python中全局變量和局部變量的理解與區(qū)別

    這篇文章主要給大家介紹了關(guān)于Python中全局變量和局部變量的理解與區(qū)別的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-02-02
  • Python發(fā)送form-data請求及拼接form-data內(nèi)容的方法

    Python發(fā)送form-data請求及拼接form-data內(nèi)容的方法

    這篇文章主要介紹了Python發(fā)送form-data請求及拼接form-data內(nèi)容的方法,文中采用的是requests的方式發(fā)送multipart/form-data請求,需要的朋友可以參考下
    2016-03-03
  • Pycharm Git 設(shè)置方法

    Pycharm Git 設(shè)置方法

    這篇文章主要介紹了Pycharm Git 設(shè)置方法,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-09-09
  • Python數(shù)組與列表的區(qū)別解析

    Python數(shù)組與列表的區(qū)別解析

    列表因為其存儲的類型可以是任何對象,因此列表的用處更廣泛,更多樣化,并且列表可以有更多的存儲空間去使用,而數(shù)組使用的空間就相對較少,這篇文章主要介紹了Python數(shù)組與列表的區(qū)別,需要的朋友可以參考下
    2023-11-11

最新評論

女性| 安远县| 兴安县| 民县| 信宜市| 邢台市| 黑龙江省| 东乌珠穆沁旗| 许昌县| 长春市| 隆德县| 西平县| 九江县| 时尚| 綦江县| 大同市| 大荔县| 马鞍山市| 绥江县| 黎城县| 昌图县| 林州市| 沙洋县| 岚皋县| 呼和浩特市| 北川| 榆中县| 翁牛特旗| 海林市| 阿拉善右旗| 南昌市| 久治县| 武邑县| 洛浦县| 石首市| 天门市| 措美县| 全南县| 互助| 黄平县| 松滋市|