python(31)-进程间的数据共享

与数据传递不同,数据共享,就是说两个进程都可以修改这个数据了。
只要用 Manager 即可,不需要加锁,因为manager会处理好互斥。

"""
数据共享:多个进程同时修改 不需要加锁Manager
1.创建变量
2.把变量作为参数传递给子进程

"""


from multiprocessing import Process, Manager
import os


#共享数据为:一个字典,一个列表
#每个进程都可传递值
def f(d, l):
    d[1] = '1'
    d['2'] = 2
    d[0.25] = None
    l.append(os.getid())    #每个进程id
    print(l)

if __name__ == '__main__':
    with Manager() as manager:
        d = manager.dict()           #生成一个字典,可在多个进程间共享和传递
        l = manager.list(range(5))   #共享列表
        p_list = []

        for i in range(10):                   #创建了10个进程
            p = Process(target=f, args=(d, l))#传了两个参数
            p.start()
            p_list.append(p)
        for res in p_list:                    #等待结果
            res.join()

        print(d)
        print(l)

 

posted @ 2020-04-05 16:19  jasmineTang  阅读(80)  评论(0)    收藏  举报