zoukankan      html  css  js  c++  java
  • 【python】多进程共享变量Manager

    Manager的复杂结构赋值问题

    Manager的字典类型:

    • 如果value是简单类型,比如int,可以直接赋值给共享变量,并可以后续直接修改
    • 如果value是复杂类型 ,比如list,dict,则必须先用临时变量做完所有修改后,最后一次性赋值给共享变量。
    from multiprocessing import Manager
    import collections
    
    m = Manager()
    share_dict = m.dict()
    
    # simple struct 简单类型可以直接赋值,后续可以直接做加减计算
    share_dict["1"] = 1
    print share_dict["1"]   # 1
    share_dict["1"] += 1
    print share_dict["1"]   # 2
    
    
    # complex struct
    share_dict["2"] = list()
    print share_dict["2"]   # []
    share_dict["2"].append(1)  # error   复杂类型,赋值后再修改,无效
    print share_dict["2"]  # []
    
    
    # correct complex struct assignment
    a = collections.defaultdict(list)
    a["11"] = [1,2,3]
    a["11"].append(4)
    share_dict["a"] = a   # 复杂类型的正确赋值方法应该是先用本地变量获取最终结果,最后一次性赋值给共享变量
    print share_dict["a"]  # defaultdict(<type 'list'>, {'11': [1, 2, 3, 4]})
    
  • 相关阅读:
    窗口看门狗(WWDG):神舟IV实验
    RTC实验:神舟IV
    C语言运算符优先级
    PWM输出:神舟IV验证
    独立看门狗(IWDG):神舟IV实验
    ADC 转换:神舟IV实验
    输入捕获模式简介
    输入捕获:神舟IV实验
    #ifndef 百度百科
    DAC:神舟IV实验
  • 原文地址:https://www.cnblogs.com/dplearning/p/8633252.html
Copyright © 2011-2022 走看看