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

Python使用concurrent.futures模塊實現(xiàn)多進(jìn)程多線程編程

 更新時間:2023年12月03日 08:45:01   作者:小龍在山東  
Python的concurrent.futures模塊可以很方便的實現(xiàn)多進(jìn)程、多線程運行,減少了多進(jìn)程帶來的的同步和共享數(shù)據(jù)問題,下面就跟隨小編一起了解一下concurrent.futures模塊的具體使用吧

Python的concurrent.futures模塊可以很方便的實現(xiàn)多進(jìn)程、多線程運行,減少了多進(jìn)程帶來的的同步和共享數(shù)據(jù)問題。

Executor是一個抽象類,表示一個可執(zhí)行的上下文。Future則代表一個將要執(zhí)行的任務(wù),并提供了一些方法來獲取任務(wù)的狀態(tài)和結(jié)果。ThreadPoolExecutor是Executor的一個具體實現(xiàn)類,它使用線程池來執(zhí)行任務(wù)。

多線程

from concurrent.futures import ThreadPoolExecutor
import time


# 任務(wù)函數(shù)
def task(name):
    print(f"任務(wù){(diào)name}開始執(zhí)行")
    time.sleep(2)
    print(f"任務(wù){(diào)name}執(zhí)行完畢")
    return True


# 創(chuàng)建線程池
executor = ThreadPoolExecutor(max_workers=2)
# 提交任務(wù)
futures = []
for i in range(5):
    future = executor.submit(task, f"任務(wù){(diào)i + 1}")
    futures.append(future)
# 等待所有任務(wù)完成
executor.shutdown()
# 打印任務(wù)結(jié)果
for future in futures:
    print(future.result())

首先創(chuàng)建線程池:ThreadPoolExecutor對象executor,

然后提交任務(wù)列表:submit到線程池返回future,加入任務(wù)列表。

設(shè)置等待所有任務(wù)完成:executor.shutdown(),

最后查看執(zhí)行結(jié)果:future.result()。

多進(jìn)程

這里改用了ProcessPoolExecutor線程池。

import os
import random
import time
from concurrent.futures import ProcessPoolExecutor


def task(n):
    print('%s is runing' % os.getpid())
    time.sleep(random.randint(1, 3))
    return n ** 2


if __name__ == '__main__':
    executor = ProcessPoolExecutor(max_workers=3)

    futures = []
    for i in range(11):
        future = executor.submit(task, i)
        futures.append(future)
    executor.shutdown(True)
    for future in futures:
        print(future.result())

add_done_callback設(shè)置回調(diào)函數(shù)

import os
from concurrent.futures import ProcessPoolExecutor

import requests


def get_page(url):
    print('<進(jìn)程%s> get %s' % (os.getpid(), url))
    respone = requests.get(url)
    if respone.status_code == 200:
        return {'url': url, 'text': respone.text}


def parse_page(res):
    res = res.result()
    print('<進(jìn)程%s> parse %s' % (os.getpid(), res['url']))
    parse_res = 'url:<%s> size:[%s]\n' % (res['url'], len(res['text']))
    with open('db.txt', 'a') as f:
        f.write(parse_res)


if __name__ == '__main__':
    urls = [
        'https://www.baidu.com',
        'https://www.python.org',
        'https://www.openstack.org',
        'https://help.github.com/',
        'http://www.sina.com.cn/'
    ]

    p = ProcessPoolExecutor(3)
    for url in urls:
        p.submit(get_page, url).add_done_callback(parse_page)
        # parse_page拿到的是一個future對象obj,需要用obj.result()拿到結(jié)果

相關(guān)鏈接

官方文檔

到此這篇關(guān)于Python使用concurrent.futures模塊實現(xiàn)多進(jìn)程多線程編程的文章就介紹到這了,更多相關(guān)Python concurrent.futures內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 分享給Python新手們的幾道簡單練習(xí)題

    分享給Python新手們的幾道簡單練習(xí)題

    這篇文章主要給學(xué)習(xí)Python的新手們分享了幾道簡單練習(xí)題,文中給出了詳細(xì)的示例代碼供大家學(xué)習(xí)參考,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。
    2017-09-09
  • Pandas中GroupBy具體用法詳解

    Pandas中GroupBy具體用法詳解

    pandas中的DF數(shù)據(jù)類型可以像數(shù)據(jù)庫表格一樣進(jìn)行g(shù)roupby操作。通常來說groupby操作可以分為三部分:分割數(shù)據(jù),應(yīng)用變換和和合并數(shù)據(jù)。本文就詳細(xì)的來介紹一下,感興趣的可以了解一下
    2021-07-07
  • Python?shapefile轉(zhuǎn)GeoJson的2種方式實例

    Python?shapefile轉(zhuǎn)GeoJson的2種方式實例

    geojson是地圖可視化系統(tǒng)中最常用的地理數(shù)據(jù)格式,幾乎所有主流地圖可視化庫或框架都支持geojson數(shù)據(jù)的加載,下面這篇文章主要給大家介紹了關(guān)于Python?shapefile轉(zhuǎn)GeoJson的2種方式的相關(guān)資料,需要的朋友可以參考下
    2023-03-03
  • 高質(zhì)量Python代碼編寫的5個優(yōu)化技巧

    高質(zhì)量Python代碼編寫的5個優(yōu)化技巧

    這篇文章主要為大家詳細(xì)介紹了編寫高質(zhì)量Python代碼的5個優(yōu)化技巧,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-11-11
  • 淺談機器學(xué)習(xí)需要的了解的十大算法

    淺談機器學(xué)習(xí)需要的了解的十大算法

    這篇文章主要介紹了淺談機器學(xué)習(xí)需要的了解的十大算法,具有一定借鑒價值,需要的朋友可以參考下。
    2017-12-12
  • OpenCV半小時掌握基本操作之濾波器

    OpenCV半小時掌握基本操作之濾波器

    這篇文章主要介紹了OpenCV基本操作之濾波器,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-09-09
  • 使用Python的判斷語句模擬三目運算

    使用Python的判斷語句模擬三目運算

    這篇文章主要介紹了使用Python的判斷語句模擬三目運算,Python中沒有類似C語言那樣的三目運算符,不過可以進(jìn)行簡單地模擬實現(xiàn),需要的朋友可以參考下
    2015-04-04
  • python?list與numpy數(shù)組效率對比

    python?list與numpy數(shù)組效率對比

    這篇文章主要介紹了python?list與numpy數(shù)組效率對比分析,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-02-02
  • python內(nèi)置函數(shù)compile(),complex()的使用

    python內(nèi)置函數(shù)compile(),complex()的使用

    這篇文章主要為大家詳細(xì)介紹了python內(nèi)置函數(shù)compile(),complex()的使用,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-06-06
  • Pytorch中的 torch.distributions庫詳解

    Pytorch中的 torch.distributions庫詳解

    這篇文章主要介紹了Pytorch中的 torch.distributions庫,本文通過實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-02-02

最新評論