zoukankan      html  css  js  c++  java
  • 【Python】多进程-共享变量(Value、string、list、Array、dict)

    #练习:未使用共享变量
    from multiprocessing import Process
    def f(n, a):
        n = 3.1415927 
        for i in range(len(a)):
            a[i] = -a[i]
    
    if __name__ == '__main__':
        num = 0  
        arr = range(10) 
        p = Process(target = f, args = (num, arr))
        p.start()
        p.join()
        print num 
        print arr[:]
    
    
    #练习:进程间共享变量,进程间都操作了num这个共享变量
    from multiprocessing import Process,Value,Array
    
    def f(n,a):
        n.value=3.1415
        for i in range(len(a)):
            a[i]=-a[i]
    
    if __name__=="__main__":
        num.value=Value("d",0.0)    # 创建一个进程间共享的数字类型,默认值为0,d表示小数
        array=Array("i",range(10))  # 创建一个进程间共享的数组类型,初始值为range[10],i表示整数
        p=Process(target=f,args=(num,array))
        p.start()
        p.join()
    
    print num.value
    print array[:]
    
    
    #练习:共享string类型变量
    from multiprocessing import Process,Manager,Value
    from ctypes import c_char_p
    
    def greet(str):
        str.value=str.value+",wangjing"
    
    if __name__=="__main__":
        manager=Manager()  #多进程可以共享的命名空间
        shareStr=manager.Value(c_char_p,"hello")   #这里c_char_p是个类
        p=Process(target=greet,args=(shareStr,))
        p.start()
        p.join()
        print shareStr.value
    
    
    #练习:创建共享的字典类型,列表类型
    from multiprocessing import Process, Manager
    
    def f( shareDict, shareList ):
        shareDict[1] = '1'
        shareDict['2'] = 2
        shareDict[0.25] = None
        shareList.reverse() # 翻转列表
    
    if __name__ == '__main__':
        manager = Manager()
        shareDict = manager.dict() # 创建共享的字典类型
        shareList = manager.list( range( 10 ) ) # 创建共享的列表类型
        p = Process( target = f, args = ( shareDict, shareList ) )
        p.start()
        p.join()
        print shareDict
        print shareList
  • 相关阅读:
    Zookeeper全解析——Paxos作为灵魂(转)
    Zookeeper全解析——Client端(转)
    zk 04之 Zookeeper Api(java)与应用
    zk 05之:ZooKeeper的配置
    ZooKeeper典型应用场景(转)
    ZooKeeper程序员指南(转)
    zk 01之 ZooKeeper概述
    zk 02之 Windows安装和使用zookeeper
    缓存与数据库一致性之一:缓存更新设计
    Android开发学习之Intent具体解释
  • 原文地址:https://www.cnblogs.com/jingsheng99/p/8784520.html
Copyright © 2011-2022 走看看