是multiprocessing.Manager.dict提取元素将返回副本引用吗?

时间:2019-01-21 03:08:13

标签: python python-3.x multiprocessing

我正在尝试使用多处理模块通过python 3.7构建我的项目,并且我需要共享一些变量(例如request.Session)

from multiprocessing import Manager

import requests

if __name__ == "__main__":
    mag = Manager()
    md = mag.dict()

    md["session"] = requests.Session()
    print(md)
    print(md["session"])
    print(md["session"])

    origin_dict = dict()
    origin_dict["session"] = requests.Session()
    print(origin_dict)
    print(origin_dict["session"])
    print(origin_dict["session"])


[output]:
{'session': <requests.sessions.Session object at 0x000001A5CBEF8898>}
<requests.sessions.Session object at 0x00000170415D54A8>
<requests.sessions.Session object at 0x00000170415D5E48>
{'session': <requests.sessions.Session object at 0x0000017040FE5438>}
<requests.sessions.Session object at 0x0000017040FE5438>
<requests.sessions.Session object at 0x0000017040FE5438>

Manager.dict()结果的输出始终具有不同的指针(好像是卷影副本或深层副本)。
origin_dict(内置字典)返回预期结果。

0 个答案:

没有答案