zoukankan      html  css  js  c++  java
  • multiprocessing.Manager共享内存的问题记录

    问题:https://stackoverflow.com/questions/8640367/python-manager-dict-in-multiprocessing

    使用 multiprocessing.Manager 来实现IPC的时候,遇到的问题

    示例1

    >>> from multiprocessing import Process, Manager
    >>> 
    >>> manager = Manager()
    >>> d = manager.dict()
    >>> 
    >>> def f():
    ...     d['k'].append(3)
    ...     print d
    ... 
    >>> if __name__ == '__main__':
    ...     d['k'] = []
    ...     p = Process(target=f)
    ...     p.start()
    ...     p.join()
    ... 
    {'k': []}
    >>> 

    示例2

    >>> from multiprocessing import Process, Manager
    >>> 
    >>> def f(d):
    ...     d['k'].append(4)
    ...     print type(d),d,id(d)
    ... 
    >>> if __name__ == '__main__':
    ...     manager = Manager()
    ...     d = manager.dict({'k':[]})
    ...     p = Process(target=f,args=(d,))
    ...     p.start()
    ...     p.join()
    ...     print type(d),d,id(d)
    ... 
    <class 'multiprocessing.managers.DictProxy'> {'k': []} 140607041173456
    <class 'multiprocessing.managers.DictProxy'> {'k': []} 140607041173456
    >>>
    

      

    为什么没有append成功呢?

    再看示例3

    >>> from multiprocessing import Process, Manager
    >>> 
    >>> manager = Manager()
    >>> d = manager.dict()
    >>> 
    >>> def f():
    ...     d['k'] = 2
    ...     print d
    ... 
    >>> if __name__ == '__main__':
    ...     d['k'] = []
    ...     p = Process(target=f)
    ...     p.start()
    ...     p.join()
    ... 
    {'k': 2}
    >>> 
    

    参考:http://www.cnblogs.com/havePassed/p/5168833.html

    总结

    使用Manager方法时需要注意,在操作共享对象时候,除了赋值操作,其他的方法都作用在共享对象的拷贝上,并不会对共享对象生效。

    作者:Standby一生热爱名山大川、草原沙漠,还有妹子
    出处:http://www.cnblogs.com/standby/

    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

  • 相关阅读:
    Go语言并发编程
    Go语言package
    大数据实践(十) Spark多种开发语言、与Hive集成
    大数据实践(九)--sqoop安装及基本操作
    Go语言错误处理
    Go语言接口
    Go语言面向对象
    数据库基础了解
    PL/SQL语句快捷输入设置
    重载操作符介绍
  • 原文地址:https://www.cnblogs.com/standby/p/8260647.html
Copyright © 2011-2022 走看看