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

python3爬蟲中多線程的優(yōu)勢總結(jié)

 更新時間:2020年11月24日 14:18:01   作者:小妮淺淺  
在本篇文章里小編給大家分享了一篇關(guān)于python3爬蟲中多線程的優(yōu)勢總結(jié)內(nèi)容,需要的朋友們可以參考學(xué)習(xí)下。

有些小伙伴跟小編討論了python中使用多線程原理的問題,就聊到了關(guān)于python多線程的弊端問題,這點可能在使用的過程中大家會能感覺到。而且之前講過的GIL也是對python多線程的一種限制。那么,我們?yōu)槭裁催€要用多線程呢?當然是多線程的優(yōu)勢已經(jīng)掩蓋了它本身不足之處,所以我們來加強一下學(xué)習(xí)python多線程的信心吧~

總結(jié)起來,使用多線程編程具有如下幾個優(yōu)點:

進程之間不能共享內(nèi)存,但線程之間共享內(nèi)存非常容易。

操作系統(tǒng)在創(chuàng)建進程時,需要為該進程重新分配系統(tǒng)資源,但創(chuàng)建線程的代價則小得多。因此,使用多線程來實現(xiàn)多任務(wù)并發(fā)執(zhí)行比使用多進程的效率高。

Python 語言內(nèi)置了多線程功能支持,而不是單純地作為底層操作系統(tǒng)的調(diào)度方式,從而簡化了 Python 的多線程編程。

threading模塊

普通創(chuàng)建方式

import threading
import time
def run(n):
  print("task", n)
  time.sleep(1)
  print('2s')
  time.sleep(1)
  print('1s')
  time.sleep(1)
  print('0s')
  time.sleep(1)
if __name__ == '__main__':
  t1 = threading.Thread(target=run, args=("t1",))
  t2 = threading.Thread(target=run, args=("t2",))
  t1.start()
  t2.start()
----------------------------------
>>> task t1
>>> task t2
>>> 2s
>>> 2s
>>> 1s
>>> 1s
>>> 0s
>>> 0s

守護線程

我們看下面這個例子,這里使用setDaemon(True)把所有的子線程都變成了主線程的守護線程,因此當主進程結(jié)束后,子線程也會隨之結(jié)束。所以當主線程結(jié)束后,整個程序就退出了。

import threading
import time
def run(n):
  print("task", n)
  time.sleep(1)    #此時子線程停1s
  print('3')
  time.sleep(1)
  print('2')
  time.sleep(1)
  print('1')
if __name__ == '__main__':
  t = threading.Thread(target=run, args=("t1",))
  t.setDaemon(True)  #把子進程設(shè)置為守護線程,必須在start()之前設(shè)置
  t.start()
  print("end")
----------------------------------
>>> task t1
>>> end

我們可以發(fā)現(xiàn),設(shè)置守護線程之后,當主線程結(jié)束時,子線程也將立即結(jié)束,不再執(zhí)行。

python多線程實例代碼:

1個線程時:

Current Thread Name Thread-1, Url: http://www.pythontab.com/html/pythonjichu/2.html 
Current Thread Name Thread-1, Url: http://www.pythontab.com/html/pythonjichu/3.html 
Current Thread Name Thread-1, Url: http://www.pythontab.com/html/pythonjichu/4.html 
Current Thread Name Thread-1, Url: http://www.pythontab.com/html/pythonjichu/5.html 
Current Thread Name Thread-1, Url: http://www.pythontab.com/html/pythonjichu/6.html 
Current Thread Name Thread-1, Url: http://www.pythontab.com/html/pythonjichu/7.html 
Current Thread Name Thread-1, Url: http://www.pythontab.com/html/pythonjichu/8.html 
Current Thread Name Thread-1, Url: http://www.pythontab.com/html/pythonjichu/9.html 
Done, Time cost: 8.182249069213867

2個線程時:

Current Thread Name Thread-1, Url: http://www.pythontab.com/html/pythonjichu/2.html 
Current Thread Name Thread-2, Url: http://www.pythontab.com/html/pythonjichu/3.html 
Current Thread Name Thread-2, Url: http://www.pythontab.com/html/pythonjichu/4.html 
Current Thread Name Thread-1, Url: http://www.pythontab.com/html/pythonjichu/5.html 
Current Thread Name Thread-2, Url: http://www.pythontab.com/html/pythonjichu/6.html 
Current Thread Name Thread-1, Url: http://www.pythontab.com/html/pythonjichu/7.html 
Current Thread Name Thread-2, Url: http://www.pythontab.com/html/pythonjichu/8.html 
Current Thread Name Thread-1, Url: http://www.pythontab.com/html/pythonjichu/9.html 
Done, Time cost: 4.0987958908081055

到此這篇關(guān)于python3爬蟲中多線程的優(yōu)勢總結(jié)的文章就介紹到這了,更多相關(guān)python3爬蟲中多線程的優(yōu)勢有哪些內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • python 循環(huán)數(shù)據(jù)賦值實例

    python 循環(huán)數(shù)據(jù)賦值實例

    今天小編就為大家分享一篇python 循環(huán)數(shù)據(jù)賦值實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-12-12
  • python 判斷參數(shù)為Nonetype類型或空的實例

    python 判斷參數(shù)為Nonetype類型或空的實例

    今天小編就為大家分享一篇python 判斷參數(shù)為Nonetype類型或空的實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-10-10
  • Python快速從視頻中提取視頻幀的方法詳解

    Python快速從視頻中提取視頻幀的方法詳解

    本文為大家介紹一種從視頻中抽取視頻幀的方法,由于單線程抽取視頻幀速度較慢,因此這里我們增加了多線程的方法,感興趣的小伙伴可以動手嘗試一下
    2022-07-07
  • Python?標準庫?fileinput與文件迭代器

    Python?標準庫?fileinput與文件迭代器

    這篇文章主要介紹了Python標準庫fileinput與文件迭代器,fileinput模塊可以對一個或多個文件中的內(nèi)容進行迭代、遍歷等操作,更多詳細內(nèi)容需要的朋友可以參考一下
    2022-09-09
  • 通過python連接Linux命令行代碼實例

    通過python連接Linux命令行代碼實例

    這篇文章主要介紹了通過python連接Linux命令行代碼實例,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-02-02
  • Python?pytorch實現(xiàn)繪制一維熱力圖

    Python?pytorch實現(xiàn)繪制一維熱力圖

    熱力圖是非常特殊的一種圖,可以顯示不可點擊區(qū)域發(fā)生的事情,這篇文章主要為大家介紹了如何利用pytorch實現(xiàn)繪制一維熱力圖,感興趣的可以了解一下
    2023-05-05
  • python獲取外網(wǎng)ip地址的方法總結(jié)

    python獲取外網(wǎng)ip地址的方法總結(jié)

    這篇文章主要介紹了python獲取外網(wǎng)ip地址的方法,實例總結(jié)了四種常用的獲取外網(wǎng)IP地址的技巧,需要的朋友可以參考下
    2015-07-07
  • python實現(xiàn)bitmap數(shù)據(jù)結(jié)構(gòu)詳解

    python實現(xiàn)bitmap數(shù)據(jù)結(jié)構(gòu)詳解

    bitmap是很常用的數(shù)據(jù)結(jié)構(gòu),比如用于Bloom Filter中,下面是使用python實現(xiàn)bitmap數(shù)據(jù)結(jié)構(gòu)的代碼講解,需要的朋友可以參考下
    2014-02-02
  • Python繪圖之實現(xiàn)繪制極坐標圖像

    Python繪圖之實現(xiàn)繪制極坐標圖像

    這篇文章主要介紹了如何利用python繪制極坐標圖像,文中的示例代碼講解詳細,具有一定的的參考價值,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2023-08-08
  • python 模擬網(wǎng)站登錄——滑塊驗證碼的識別

    python 模擬網(wǎng)站登錄——滑塊驗證碼的識別

    這篇文章主要介紹了python 模擬網(wǎng)站登錄——滑塊驗證碼的識別,幫助大家更好的理解和學(xué)習(xí)使用python的爬蟲技術(shù),感興趣的朋友可以了解下
    2021-03-03

最新評論