Python 進程間通信問題—Manager方法


# Author:Winter Liu is coming!
# 通過Manager實現進程間通信,但注意數據安全問題
# Manager類提供了字典和列表方法,實質是使用文件,所以並發中會出現數據安全問題
from multiprocessing import Process, Manager, Lock


def func(dic,lock):
    with lock:
        dic["count"] -= 1   


if __name__ == '__main__':
    m = Manager()  # 通過文件實現,所以會出現數據不安全的情況,需要加鎖
    lock = Lock()
    dic = m.dict({"count": 20})
    plist = []
    for i in range(20):
        p = Process(target=func, args=(dic,lock))
        p.start()
        plist.append(p)
    for p in plist:
        p.join()
    print(dic)

 


免責聲明!

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



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