【python】多進程共享變量


有一個字典變量,需要在多個進程間共享

 

使用Manager, 下面是一個小例子。 注意使用json前需要將類型轉換。

#!/usr/bin/python
# coding=utf-8


import json
from multiprocessing import Process, Lock, Manager


def deal(data, lock, share_dict):
    # do something
    share_dict["test"] = 10
    mydict = dict(share_dict)  # 注意,共享dict無法直接dumps,會報類型錯誤,必須先轉換為普通字典
    json.dumps(mydict)

def deal_multi():
    data = "test"
    n = 10
    process = list()
    lock = Lock()    #  多進程鎖
    m = Manager()    
    share_dict = m.dict()   #  多進程共享變量 字典
    for i in xrange(n):
        process.append(Process(target=deal, args=(data, lock, share_dict)))
    for p in process:
        p.start()
    for p in process:
        p.join()


if __name__ == '__main__':
    deal_multi()

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM