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

Python實(shí)現(xiàn)多進(jìn)程之間共享變量

 更新時(shí)間:2024年11月25日 09:19:01   作者:程序員貝塔  
Python多線程和多進(jìn)程之間共享變量的方法有所不同,多線程可以直接使用global變量,而多進(jìn)程則需要使用multiprocessing庫中的Value、Array、Queue等或Manager模塊,Pool進(jìn)程池中進(jìn)程間共享變量時(shí),必須使用Manager模塊,在共享list時(shí),不能直接賦值

Python多進(jìn)程之間共享變量

Python 多線程之間共享變量很簡單,直接定義全局 global 變量即可。而多進(jìn)程之間是相互獨(dú)立的執(zhí)行單元,這種方法就不可行了。

不過 Python 標(biāo)準(zhǔn)庫已經(jīng)給我們提供了這樣的能力,使用起來也很簡單。

但要分兩種情況來看,一種是 Process 多進(jìn)程,一種是 Pool 進(jìn)程池的方式。

Process 多進(jìn)程

使用 Process 定義的多進(jìn)程之間共享變量可以直接使用 multiprocessing 下的 Value,Array,Queue 等,如果要共享 list,dict,可以使用強(qiáng)大的 Manager 模塊。

import multiprocessing

def func(num):
    # 共享數(shù)值型變量
    # num.value = 2

    # 共享數(shù)組型變量
    num[2] = 9999


if __name__ == '__main__':
    # 共享數(shù)值型變量
    # num = multiprocessing.Value('d', 1)
    # print(num.value)

    # 共享數(shù)組型變量
    num = multiprocessing.Array('i', [1, 2, 3, 4, 5])
    print(num[:])

    p = multiprocessing.Process(target=func, args=(num,))
    p.start()
    p.join()

    # 共享數(shù)值型變量
    # print(num.value)

    # 共享數(shù)組型變量
    print(num[:])

Pool 進(jìn)程池

進(jìn)程池之間共享變量是不能使用上文方式的,因?yàn)檫M(jìn)程池內(nèi)進(jìn)程關(guān)系并非父子進(jìn)程,想要共享,必須使用 Manager 模塊來定義。

from multiprocessing import Pool, Manager

def func(my_list, my_dict):
    my_list.append(10)
    my_list.append(11)
    my_dict['a'] = 1
    my_dict['b'] = 2


if __name__ == '__main__':
    manager = Manager()
    my_list = manager.list()
    my_dict = manager.dict()

    pool = Pool(processes=2)
    for i in range(0, 2):
        pool.apply_async(func, (my_list, my_dict))
    pool.close()
    pool.join()

    print(my_list)
    print(my_dict)

還有一點(diǎn)需要注意,在共享 list 時(shí),像下面這樣寫 func 是不起作用的。

def func(my_list, my_dict):
    my_list = [10, 11]
    my_dict['a'] = 1
    my_dict['b'] = 2

這樣寫相當(dāng)于重新定義了一個(gè)局部變量,并沒有作用到原來的 list 上,必須使用 append,extend 等方法。

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • 詳解Django CAS 解決方案

    詳解Django CAS 解決方案

    這篇文章主要介紹了詳解Django CAS 解決方案,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-10-10
  • PyQt6中QWidget 和QMainWindow的區(qū)別小結(jié)

    PyQt6中QWidget 和QMainWindow的區(qū)別小結(jié)

    QWidget?和?QMainWindow?是 PyQt 中兩個(gè)常用的類,它們?cè)诠δ芎陀猛旧嫌酗@著區(qū)別,本文主要介紹了PyQt6中QWidget 和QMainWindow的區(qū)別小結(jié),感興趣的可以了解一下
    2025-05-05
  • 人臉檢測——基于Flask和PaddleHub

    人臉檢測——基于Flask和PaddleHub

    這篇文章詳細(xì)介紹了基于Flask和PaddleHub來進(jìn)行人臉檢測,想詳細(xì)了解的朋友可以參考閱讀
    2023-03-03
  • Python學(xué)習(xí)小技巧之列表項(xiàng)的推導(dǎo)式與過濾操作

    Python學(xué)習(xí)小技巧之列表項(xiàng)的推導(dǎo)式與過濾操作

    這篇文章主要給大家介紹了Python學(xué)習(xí)小技巧之列表項(xiàng)的推導(dǎo)式與過濾操作的相關(guān)資料,文中介紹的非常詳細(xì),對(duì)大家具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起看看把。
    2017-05-05
  • Python的NumPy使用之?dāng)?shù)組過濾

    Python的NumPy使用之?dāng)?shù)組過濾

    這篇文章主要介紹了Python的NumPy使用之?dāng)?shù)組過濾,在 NumPy中,我們使用布爾索引列表來過濾數(shù)組布爾索引列表是與數(shù)組中的索引相對(duì)應(yīng)的布爾值列表,需要的朋友可以參考下
    2023-07-07
  • pytorch隨機(jī)采樣操作SubsetRandomSampler()

    pytorch隨機(jī)采樣操作SubsetRandomSampler()

    這篇文章主要介紹了pytorch隨機(jī)采樣操作SubsetRandomSampler(),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2020-07-07
  • Python的底層內(nèi)存模型之模塊、類、對(duì)象的存儲(chǔ)與運(yùn)行機(jī)制

    Python的底層內(nèi)存模型之模塊、類、對(duì)象的存儲(chǔ)與運(yùn)行機(jī)制

    這篇文章介紹了Python的底層內(nèi)存模型之模塊、類、對(duì)象的存儲(chǔ)與運(yùn)行機(jī)制,從內(nèi)存布局、對(duì)象存儲(chǔ)、屬性管理三個(gè)核心維度,總結(jié)匯總 Python 的底層內(nèi)存模型和運(yùn)行機(jī)制,感興趣的朋友跟隨小編一起看看吧
    2026-02-02
  • 詳解Python中數(shù)據(jù)處理的方法總結(jié)及實(shí)現(xiàn)

    詳解Python中數(shù)據(jù)處理的方法總結(jié)及實(shí)現(xiàn)

    數(shù)據(jù)增強(qiáng)作為前處理的關(guān)鍵步驟,在整個(gè)計(jì)算機(jī)視覺中有著具足輕重的地位。本文為大家總結(jié)了Python中數(shù)據(jù)處理的方法及實(shí)現(xiàn),需要的可以參考一下
    2022-09-09
  • Django創(chuàng)建一個(gè)后臺(tái)的基本步驟記錄

    Django創(chuàng)建一個(gè)后臺(tái)的基本步驟記錄

    這篇文章主要給大家介紹了關(guān)于Django創(chuàng)建一個(gè)后臺(tái)的基本步驟,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-10-10
  • Python接口自動(dòng)化之淺析requests模塊get請(qǐng)求

    Python接口自動(dòng)化之淺析requests模塊get請(qǐng)求

    這篇文章主要介紹了requests模塊get請(qǐng)求,在Python語言中,雖然提供了urllib2和urllib的庫,但是相比較而言,Requests仍然是實(shí)現(xiàn)接口測試最好的選擇,因?yàn)樗怯闷饋砀雍啽?/div> 2021-08-08

最新評(píng)論

宜春市| 洪江市| 酉阳| 凌云县| 三台县| 盐边县| 师宗县| 信阳市| 富裕县| 嘉定区| 西青区| 南木林县| 怀安县| 枣阳市| 江门市| 雷波县| 天气| 巴南区| 博爱县| 天津市| 海淀区| 米脂县| 阿城市| 景泰县| 秭归县| 尼玛县| 吴江市| 万源市| 孙吴县| 商河县| 巫溪县| 云南省| 台江县| 丘北县| 工布江达县| 永福县| 衡东县| 宿州市| 桂阳县| 哈尔滨市| 南通市|