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

python進程池和線程池的區(qū)別

 更新時間:2023年12月10日 11:43:34   作者:樂神來了  
本文主要介紹了python進程池和線程池的區(qū)別,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧

線程池和多線程的區(qū)別:

線程池可以減少線程創(chuàng)建和銷毀的開銷,并控制并發(fā)數量,從而提高系統(tǒng)的性能。多線程可以并發(fā)執(zhí)行程序中的不同任務,提高程序的效率和系統(tǒng)的吞吐量。
如果需要同時處理多個任務并且這些任務之間沒有依賴關系,那么可以選擇多線程;如果需要限制同時執(zhí)行的任務數量或者需要復用線程來避免頻繁創(chuàng)建和銷毀線程的開銷或者當需要執(zhí)行的任務數量很大但是每個任務所需的時間較短并且執(zhí)行時間相對穩(wěn)定,那么可以選擇線程池。

進程池和多進程的區(qū)別:

如果你需要同時執(zhí)行多個不同的任務,使用多進程;如果你需要并行處理多個任務,并且每個任務都是獨立的,那么多進程會是一個不錯的選擇。每個進程都有自己的內存空間和獨立的 CPU 時間,可以避免多個任務之間的相互干擾。
如果你需要限制并發(fā)執(zhí)行任務的數量,使用進程池。如果你的任務數比較大,而且每個任務執(zhí)行時間較短,那么進程池可能更適合。進程池會預先創(chuàng)建一定數量的進程,任務到來時就將其分配給空閑的進程執(zhí)行,避免反復創(chuàng)建和銷毀進程的開銷。

線程池的使用:

from concurrent.futures import ThreadPoolExecutor, as_completed, wait, ALL_COMPLETED


def test(a):
    print(f'一個假的進程任務{a}')
    return a

def add_thread():
    threads_list = [i for i in range(10)]
    th_executor = ThreadPoolExecutor(max_workers=10)
    for i in threads_list:
        # 線程池執(zhí)行任務方法1
        th_executor.submit(test, i)
    # 線程池執(zhí)行任務方法2
    th_executor.map(test, threads_list)

    # 線程池獲取結果方法1:使用as_completed方法,然后用其result屬性輸出結果
    all_thread = [th_executor.submit(test, i) for i in threads_list]
    results1 = [j.result() for j in as_completed(all_thread)]
    print('result1結果:', results1)
	# result1結果: [3, 0, 2, 4, 1, 5, 6, 8, 9, 7]

    # 線程池獲取結果方法2
    results2 = [k for k in th_executor.map(test, threads_list)]
    print('results2結果:', results2)
    # results2結果: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

    # 也可以使用等待函數,fs:任務序列;timeout任務最大等待時間,在規(guī)定時間內,任務未執(zhí)行完成也會停止;
    # return_when:wait返回結果的條件,默認為ALL_COMPLETED,全部執(zhí)行完成再返回
    # 譬如,此處以下的代碼是展示wait的用法
    # task_list = th_executor.map(test, threads_list)
    # 等待任務完成
    # wait(task_list)
    # 任務完成之后再進行結果的獲取
    # task_result = [k for k in task_list]


if __name__ == '__main__':

    add_thread()


由result1結果和result2結果可知,使用submit方法執(zhí)行任務的順序是不固定的,使用map方法執(zhí)行任務的順序是固定的。

進程池的用法:和線程池是一樣的;進程池用的是with方法去展示的,也可以用線程池的那種方法是使用,當然線程池的也可以用with方法去使用。

from concurrent.futures import ProcessPoolExecutor, as_completed, wait, ALL_COMPLETED

def test(a):
    print(f'一個假的線程任務{a}')
    return a

def add_process():
    with ProcessPoolExecutor(max_workers=8) as pool:
        process_list = [i for i in range(10)]
        for i in process_list:
            # 進程池執(zhí)行任務方法1
            pool.submit(test, i)
        # 進程池執(zhí)行任務方法2
        pool.map(test, process_list)

        # 進程池獲取結果方法1:使用as_completed方法,然后用其result屬性輸出結果
        all_process = [pool.submit(test, i) for i in process_list]
        results1 = [j.result() for j in as_completed(all_process)]
        print('result1結果:', results1)
        # results1結果: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

        # 進程池獲取結果方法2
        results2 = [k for k in pool.map(test, process_list)]
        print('results2結果:', results2)
    	# results2結果: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

        # 也可以使用等待函數,fs:任務序列;timeout任務最大等待時間,在規(guī)定時間內,任務未執(zhí)行完成也會停止;
        # return_when:wait返回結果的條件,默認為ALL_COMPLETED,全部執(zhí)行完成再返回
        # 譬如,此處是展示wait的用法
        # task_list = pool.map(test, process_list)
        # # 等待任務完成
        # wait(task_list)
        # # 任務完成之后再進行結果的獲取
        # task_result = [k for k in task_list]



if __name__ == '__main__':

    add_process()

由result1結果和result2結果可知,使用submit方法執(zhí)行任務的順序和使用map方法執(zhí)行任務的順序都是固定的。

到此這篇關于python進程池和線程池的區(qū)別的文章就介紹到這了,更多相關python進程池和線程池內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • 解析python實現(xiàn)Lasso回歸

    解析python實現(xiàn)Lasso回歸

    Lasso是一個線性模型,它給出的模型具有稀疏的系數。接下來通過本文給大家分享python實現(xiàn)Lasso回歸的相關知識,感興趣的朋友一起看看吧
    2019-09-09
  • 關于python中導入文件到list的問題

    關于python中導入文件到list的問題

    這篇文章主要介紹了關于python中導入文件到list的問題,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-10-10
  • python計算方程式根的方法

    python計算方程式根的方法

    這篇文章主要介紹了python計算方程式根的方法,涉及Python數學運算的相關技巧,需要的朋友可以參考下
    2015-05-05
  • Python 實現(xiàn)Excel XLS和XLSX格式相互轉換問題

    Python 實現(xiàn)Excel XLS和XLSX格式相互轉換問題

    本文介紹如何使用Python庫Spire.XLS for Python實現(xiàn)Excel文件的XLS和XLSX格式轉換,提供了詳細的安裝指南和轉換步驟,幫助用戶在不同版本的Excel文件格式之間靈活轉換,同時支持將Excel文件轉換為PDF、圖片、HTML等格式
    2024-10-10
  • django 連接數據庫出現(xiàn)1045錯誤的解決方式

    django 連接數據庫出現(xiàn)1045錯誤的解決方式

    這篇文章主要介紹了django 連接數據庫出現(xiàn)1045錯誤的解決方式,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-05-05
  • pygame游戲之旅 如何制作游戲障礙

    pygame游戲之旅 如何制作游戲障礙

    這篇文章主要為大家詳細介紹了pygame游戲之旅的第6篇,教大家如何制作游戲障礙,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-11-11
  • 基于Python實現(xiàn)體育彩票選號器功能代碼實例

    基于Python實現(xiàn)體育彩票選號器功能代碼實例

    這篇文章主要介紹了基于Python實現(xiàn)體育彩票選號器功能代碼實例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-09-09
  • python 計算文件的md5值實例

    python 計算文件的md5值實例

    下面小編就為大家?guī)硪黄猵ython 計算文件的md5值實例。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-01-01
  • Python中循環(huán)引用(import)失敗的解決方法

    Python中循環(huán)引用(import)失敗的解決方法

    在python中常常會遇到循環(huán)import即circular import的問題,下面這篇文章主要給大家介紹了關于Python中循環(huán)引用(import)失敗的解決方法,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考借鑒,下面來一起學習學習吧。
    2018-04-04
  • 簡單的連接MySQL與Python的Bottle框架的方法

    簡單的連接MySQL與Python的Bottle框架的方法

    這篇文章主要介紹了簡單的連接MySQL與Python的Bottle框架的方法,主要基于mysql-connector插件,需要的朋友可以參考下
    2015-04-04

最新評論

怀化市| 宁海县| 得荣县| 崇仁县| 清涧县| 石台县| 柳州市| 舞阳县| 柳林县| 安福县| 肥城市| 英吉沙县| 嘉禾县| 怀来县| 通辽市| 长汀县| 孟村| 横峰县| 铜鼓县| 崇明县| 山西省| 汽车| 金寨县| 左权县| 山东| 轮台县| 门源| 青浦区| 扎赉特旗| 疏附县| 山阳县| 鲜城| 大姚县| 乐昌市| 南澳县| 河西区| 兴义市| 桦甸市| 仲巴县| 西林县| 偃师市|