欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

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

我們都知道,比方我有一個4核的CPU,那么這樣一來,在單位時間內(nèi)每個核只能跑一個線程,然后時間片輪轉切換。但是Python不一樣,它不管你有幾個核,單位時間多個核只能跑一個線程,然后時間片輪轉??雌饋砗懿豢伤甲h?但是這就是GIL搞的鬼。任何Python線程執(zhí)行前,必須先獲得GIL鎖,然后,每執(zhí)行100條字節(jié)碼,解釋器就自動釋放GIL鎖,讓別的線程有機會執(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利用率并沒有占滿,大致相當于單核水平。

而如果我們變成進程呢?

我們改一下代碼:

#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

結果直接飆到了100%,說明進程是可以利用多核的!

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

相關文章

  • Python中處理時間的幾種方法小結

    Python中處理時間的幾種方法小結

    這篇文章主要介紹了Python中處理時間的幾種方法,包括時間的獲取和時間之間的轉換等等,需要的朋友可以參考下
    2015-04-04
  • 如何用python實現(xiàn)復制粘貼功能

    如何用python實現(xiàn)復制粘貼功能

    這篇文章主要介紹了如何用python實現(xiàn)復制粘貼功能,幫助大家更好的理解和學習使用python,感興趣的朋友可以了解下
    2021-03-03
  • pandas中Series和DataFrame的rank方法解析

    pandas中Series和DataFrame的rank方法解析

    pandas中的rank方法是用于數(shù)據(jù)排名的重要工具,它不返回排序后的數(shù)據(jù),而是數(shù)據(jù)的排名。rank方法可以處理相同數(shù)據(jù)的排名,通過平均排名方式解決排名沖突,并支持自定義排序規(guī)則及逆序排名。此外,DataFrame的rank方法允許在行或列上計算排名
    2024-09-09
  • Python最基本的數(shù)據(jù)類型以及對元組的介紹

    Python最基本的數(shù)據(jù)類型以及對元組的介紹

    這篇文章主要介紹了Python最基本的數(shù)據(jù)類型以及對元組的介紹,來自于IBM官方網(wǎng)站技術文檔,需要的朋友可以參考下
    2015-04-04
  • Python并發(fā)編程之IO模型

    Python并發(fā)編程之IO模型

    本文詳細講解了Python并發(fā)編程之IO模型,文中通過示例代碼介紹的非常詳細。對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-06-06
  • numpy.ndarray 實現(xiàn)對特定行或列取值

    numpy.ndarray 實現(xiàn)對特定行或列取值

    今天小編就為大家分享一篇numpy.ndarray 實現(xiàn)對特定行或列取值,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-12-12
  • 如何在windows下安裝配置python工具Ulipad

    如何在windows下安裝配置python工具Ulipad

    這篇文章主要介紹了如何在windows下安裝配置python工具Ulipad,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-10-10
  • 利用python繪制動態(tài)圣誕下雪圖

    利用python繪制動態(tài)圣誕下雪圖

    圣誕節(jié)快到了,給你最愛的人送上一顆python動態(tài)圣誕下雪圖吧,所以今天小編給大家介紹了如何利用python繪制動態(tài)圣誕下雪圖,文中有詳細的代碼示例,需要的朋友可以參考下
    2023-12-12
  • Python virtualenv虛擬環(huán)境實現(xiàn)過程解析

    Python virtualenv虛擬環(huán)境實現(xiàn)過程解析

    這篇文章主要介紹了Python virtualenv虛擬環(huán)境實現(xiàn)過程解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-04-04
  • pycham查看程序執(zhí)行的時間方法

    pycham查看程序執(zhí)行的時間方法

    今天小編就為大家分享一篇pycham查看程序執(zhí)行的時間方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-11-11

最新評論