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

python線程池的四種好處總結(jié)

 更新時間:2021年04月28日 08:29:34   作者:小妮淺淺  
在本篇文章里小編給大家整理的是一篇關(guān)于python線程池的四種好處歸納內(nèi)容,有興趣的朋友們可以學(xué)習下。

1、使用好處

提高性能:由于減去了大量新建終止線程的費用,重用了線程資源;

適用場景:適用于處理大量突發(fā)請求或需要大量線程完成任務(wù),但實際任務(wù)處理時間短。

防御功能:可以有效避免系統(tǒng)因線程過多而導(dǎo)致系統(tǒng)負載過大而相應(yīng)變慢的問題。

代碼優(yōu)勢:使用線程池的語法比創(chuàng)建自己的線程更簡單。

2、實例

"""
@file   : 004-線程池的使用.py
@author : xiaolu
@email  : luxiaonlp@163.com
@time   : 2021-02-01
"""
import concurrent.futures
import requests
from bs4 import BeautifulSoup
 
 
def craw(url):
    # 爬取網(wǎng)頁內(nèi)容
    r = requests.get(url)
    return r.text
 
 
def parse(html):
    # 解析其中的內(nèi)容
    soup = BeautifulSoup(html, "html.parser")
    links = soup.find_all("a", class_="post-item-title")
    return [(link["href"], link.get_text()) for link in links]   # 那鏈接和標題拿出來
 
 
if __name__ == '__main__':
    # 待爬取的網(wǎng)頁鏈接
    urls = [
        "https://www.cnblogs.com/sitehome/p/{}".format(page) for page in range(1, 50 + 1)
    ]
        
    # craw
    with concurrent.futures.ThreadPoolExecutor() as pool:
        htmls = pool.map(craw, urls)
        htmls = list(zip(urls, htmls))
        for url, html in htmls:
            print(url, len(html))
    print("craw over")
    
    # parse
    with concurrent.futures.ThreadPoolExecutor() as pool:
        futures = {}
        for url, html in htmls:
            future = pool.submit(parse, html)
            futures[future] = url
    
        # for future, url in futures.items():
        #     print(url, future.result())
    
        for future in concurrent.futures.as_completed(futures):
            url = futures[future]
            print(url, future.result())

知識點補充:

線程池的使用

線程池的基類是 concurrent.futures 模塊中的 Executor,Executor 提供了兩個子類,即 ThreadPoolExecutor 和ProcessPoolExecutor,其中 ThreadPoolExecutor 用于創(chuàng)建線程池,而 ProcessPoolExecutor 用于創(chuàng)建進程池。

如果使用線程池/進程池來管理并發(fā)編程,那么只要將相應(yīng)的 task 函數(shù)提交給線程池/進程池,剩下的事情就由線程池/進程池來搞定。

Exectuor 提供了如下常用方法:

submit(fn, *args, **kwargs):將 fn 函數(shù)提交給線程池。*args 代表傳給 fn 函數(shù)的參數(shù),*kwargs 代表以關(guān)鍵字參數(shù)的形式為 fn 函數(shù)傳入?yún)?shù)。

map(func, *iterables, timeout=None, chunksize=1):該函數(shù)類似于全局函數(shù) map(func, *iterables),只是該函數(shù)將會啟動多個線程,以異步方式立即對 iterables 執(zhí)行 map 處理。

shutdown(wait=True):關(guān)閉線程池。

程序?qū)?task 函數(shù)提交(submit)給線程池后,submit 方法會返回一個 Future 對象,F(xiàn)uture 類主要用于獲取線程任務(wù)函數(shù)的返回值。由于線程任務(wù)會在新線程中以異步方式執(zhí)行,因此,線程執(zhí)行的函數(shù)相當于一個“將來完成”的任務(wù),所以 Python 使用 Future 來代表。

到此這篇關(guān)于python線程池的四種好處總結(jié)的文章就介紹到這了,更多相關(guān)python線程池的四種好處歸納內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python實現(xiàn)包含min函數(shù)的棧

    Python實現(xiàn)包含min函數(shù)的棧

    這篇文章主要介紹了Python實現(xiàn)包含min函數(shù)的棧,可實現(xiàn)棧中元素的計算及進棧出棧等操作,需要的朋友可以參考下
    2016-04-04
  • python3.10及以上版本編譯安裝ssl模塊的詳細過程

    python3.10及以上版本編譯安裝ssl模塊的詳細過程

    最近搞安裝ssl模塊每天都弄到很晚,所以這里給大家整理下,這篇文章主要給大家介紹了關(guān)于python3.10及以上版本編譯安裝ssl模塊的詳細過程,文中介紹的非常詳細,需要的朋友可以參考下
    2023-05-05
  • 對python打亂數(shù)據(jù)集中X,y標簽對的方法詳解

    對python打亂數(shù)據(jù)集中X,y標簽對的方法詳解

    今天就為大家分享一篇對python打亂數(shù)據(jù)集中X,y標簽對的方法詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-12-12
  • Python中使用?zipfile創(chuàng)建文件壓縮工具

    Python中使用?zipfile創(chuàng)建文件壓縮工具

    這篇文章主要介紹了Python中使用zipfile創(chuàng)建文件壓縮工具,通過使用 wxPython 模塊,我們創(chuàng)建了一個簡單而實用的文件壓縮工具,本文結(jié)合實例代碼給大家介紹的非常詳細,對大家的學(xué)習或工作具有一定的ca參考借鑒價值,需要的朋友可以參考下
    2023-09-09
  • Django ManyToManyField 跨越中間表查詢的方法

    Django ManyToManyField 跨越中間表查詢的方法

    今天小編就為大家分享一篇Django ManyToManyField 跨越中間表查詢的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-12-12
  • 實操Python爬取覓知網(wǎng)素材圖片示例

    實操Python爬取覓知網(wǎng)素材圖片示例

    大家好,本篇文章介紹的是實操Python爬取覓知網(wǎng)素材圖片示例,感興趣的朋友趕快來看一看吧,對你有用的話記得收藏起來,方便下次瀏覽
    2021-11-11
  • Python自動化辦公之清理重復(fù)文件詳解

    Python自動化辦公之清理重復(fù)文件詳解

    這篇文章主要為大家詳細介紹了如何利用Python清理重復(fù)的文件,文中的示例代碼講解詳細,對我們學(xué)習Python有一定幫助,需要的可以參考一下
    2022-05-05
  • Django處理文件上傳File Uploads的實例

    Django處理文件上傳File Uploads的實例

    今天小編就為大家分享一篇Django處理文件上傳File Uploads的實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-05-05
  • pycharm Tab鍵設(shè)置成4個空格的操作

    pycharm Tab鍵設(shè)置成4個空格的操作

    這篇文章主要介紹了pycharm Tab鍵設(shè)置成4個空格的操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-02-02
  • 通過底層源碼理解YOLOv5的Backbone

    通過底層源碼理解YOLOv5的Backbone

    yolov5的特征提取網(wǎng)絡(luò)兼顧速度與精度,將PAN與PFN深度融合,對不同尺度魯棒性強,可以即插即用,后接不同的檢測器,下面這篇文章主要給大家介紹了關(guān)于如何通過底層源碼理解YOLOv5的Backbone的相關(guān)資料,需要的朋友可以參考下
    2022-05-05

最新評論

黎城县| 南平市| 乐都县| 清丰县| 崇礼县| 于都县| 阳高县| 岑溪市| 晴隆县| 山西省| 高碑店市| 浠水县| 刚察县| 隆尧县| 宁阳县| 兴海县| 凤庆县| 新干县| 吉安县| 呼图壁县| 平乐县| 淄博市| 大城县| 陈巴尔虎旗| 隆回县| 宜丰县| 云霄县| 石景山区| 芜湖市| 翁牛特旗| 扶绥县| 葫芦岛市| 郁南县| 荆州市| 柞水县| 晴隆县| 玉树县| 包头市| 西和县| 四平市| 太仆寺旗|