婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > python線程池的四種好處總結

python線程池的四種好處總結

熱門標簽:荊州云電銷機器人供應商 蘇州電銷機器人十大排行榜 外呼不封號系統 江蘇房產電銷機器人廠家 溫州旅游地圖標注 幫人做地圖標注收費算詐騙嗎 遼寧400電話辦理多少錢 悟空智電銷機器人6 電信營業廳400電話申請

1、使用好處

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

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

防御功能:可以有效避免系統因線程過多而導致系統負載過大而相應變慢的問題。

代碼優勢:使用線程池的語法比創建自己的線程更簡單。

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):
    # 爬取網頁內容
    r = requests.get(url)
    return r.text
 
 
def parse(html):
    # 解析其中的內容
    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__':
    # 待爬取的網頁鏈接
    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 用于創建線程池,而 ProcessPoolExecutor 用于創建進程池。

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

Exectuor 提供了如下常用方法:

submit(fn, *args, **kwargs):將 fn 函數提交給線程池。*args 代表傳給 fn 函數的參數,*kwargs 代表以關鍵字參數的形式為 fn 函數傳入參數。

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

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

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

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

您可能感興趣的文章:
  • Python 線程池模塊之多線程操作代碼
  • Python爬蟲之線程池的使用
  • python爬蟲線程池案例詳解(梨視頻短視頻爬取)
  • python線程池 ThreadPoolExecutor 的用法示例
  • 實例代碼講解Python 線程池
  • Python 如何創建一個線程池
  • python線程池如何使用
  • 解決python ThreadPoolExecutor 線程池中的異常捕獲問題
  • Python定時器線程池原理詳解
  • Python 使用threading+Queue實現線程池示例
  • Python線程池的正確使用方法

標簽:濟南 景德鎮 喀什 黃山 欽州 三沙 臺灣 宿遷

巨人網絡通訊聲明:本文標題《python線程池的四種好處總結》,本文關鍵詞  python,線程,池,的,四種,好處,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《python線程池的四種好處總結》相關的同類信息!
  • 本頁收集關于python線程池的四種好處總結的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 阜城县| 巴南区| 城固县| 湟源县| 普定县| 宁城县| 延长县| 伊宁县| 阿坝县| 青海省| 富裕县| 通化县| 广昌县| 崇左市| 贺兰县| 岗巴县| SHOW| 大余县| 西安市| 县级市| 佛坪县| 黄大仙区| 新乡县| 德兴市| 明溪县| 图们市| 唐山市| 祁东县| 乐陵市| 台南县| 墨竹工卡县| 宣城市| 新郑市| 婺源县| 尼玛县| 湘乡市| 同德县| 保山市| 大宁县| 伊通| 蓬莱市|