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

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

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

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

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

多線程

from concurrent.futures import ThreadPoolExecutor
import time


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


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

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

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

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

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

多進程

這里改用了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設置回調(diào)函數(shù)

import os
from concurrent.futures import ProcessPoolExecutor

import requests


def get_page(url):
    print('<進程%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('<進程%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é)果

相關鏈接

官方文檔

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

相關文章

  • NumPy創(chuàng)建數(shù)組的多種方式實現(xiàn)

    NumPy創(chuàng)建數(shù)組的多種方式實現(xiàn)

    在使用NumPy時,通常需要先創(chuàng)建一個數(shù)組,然后再對這個數(shù)組進行各種操,本文主要介紹了NumPy創(chuàng)建數(shù)組的多種方式實現(xiàn),具有一定的參考價值,感興趣的可以了解一下
    2023-06-06
  • Python中def()函數(shù)的實戰(zhàn)練習題

    Python中def()函數(shù)的實戰(zhàn)練習題

    def是define的縮寫,用來自定義函數(shù),下面這篇文章主要給大家介紹了關于Python中def()函數(shù)的相關資料,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考下
    2022-07-07
  • Python 中使用正則表達式轉(zhuǎn)義

    Python 中使用正則表達式轉(zhuǎn)義

    這篇文章主要介紹了Python 正則表達式轉(zhuǎn)義,在 Python 中,正則表達式轉(zhuǎn)義sub()方法用于替換字符串,替換后的字符串由 re 模塊中的 Python 內(nèi)置方法返回,需要的朋友可以參考下
    2023-06-06
  • C++實現(xiàn)將文件保存到指定磁盤路徑的完整指南

    C++實現(xiàn)將文件保存到指定磁盤路徑的完整指南

    在C++編程中,文件操作是常見的需求之一,本文將深入探討如何使用std::ofstream將文件保存到特定的磁盤路徑,特別是D盤,并分析各種路徑表示方法的優(yōu)缺點,希望對大家有所幫助
    2025-12-12
  • pytorch實現(xiàn)下載加載mnist數(shù)據(jù)集

    pytorch實現(xiàn)下載加載mnist數(shù)據(jù)集

    這篇文章主要介紹了pytorch實現(xiàn)下載加載mnist數(shù)據(jù)集方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-06-06
  • Python序列循環(huán)移位的3種方法推薦

    Python序列循環(huán)移位的3種方法推薦

    下面小編就為大家分享一篇Python序列循環(huán)移位的3種方法推薦,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-04-04
  • python使用any判斷一個對象是否為空的方法

    python使用any判斷一個對象是否為空的方法

    這篇文章主要介紹了python使用any判斷一個對象是否為空的方法,并給出了改進的方法供大家對比參考,具有一定的借鑒價值,需要的朋友可以參考下
    2014-11-11
  • python getopt詳解及簡單實例

    python getopt詳解及簡單實例

    這篇文章主要介紹了 python getopt詳解及簡單實例的相關資料,需要的朋友可以參考下
    2016-12-12
  • 通過python的matplotlib包將Tensorflow數(shù)據(jù)進行可視化的方法

    通過python的matplotlib包將Tensorflow數(shù)據(jù)進行可視化的方法

    今天小編就為大家分享一篇通過python的matplotlib包將Tensorflow數(shù)據(jù)進行可視化的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-01-01
  • Python中排序函數(shù)sorted()函數(shù)的使用實例

    Python中排序函數(shù)sorted()函數(shù)的使用實例

    sorted()作為Python內(nèi)置函數(shù)之一,其功能是對序列(列表、元組、字典、集合、還包括字符串)進行排序,下面這篇文章主要給大家介紹了關于Python中排序函數(shù)sorted()函數(shù)的相關資料,需要的朋友可以參考下
    2022-11-11

最新評論

南岸区| 双柏县| 桐梓县| 九龙坡区| 湛江市| 正镶白旗| 随州市| 修水县| 栾川县| 通城县| 肥城市| 沾化县| 定陶县| 宜阳县| 丰县| 且末县| 五指山市| 门头沟区| 锡林浩特市| 武邑县| 潍坊市| 兴义市| 乌拉特中旗| 阿巴嘎旗| 马公市| 凌海市| 铜川市| 舒城县| 泉州市| 济南市| 新疆| 乌苏市| 扎兰屯市| 东台市| 高台县| 普安县| 济南市| 宜川县| 铁力市| 渑池县| 汉沽区|