Python并发编程5——进程间通信(3) 共享内存

共享内存

  1. 通信原理:在内中开辟一块空间,进程可以写入内容和读取内容完成通信,但是每次写入内容会覆盖之前内容。

  2. 实现方法

from multiprocessing import Value,Array

obj = Value(ctype,data)
功能 : 开辟共享内存
参数 : ctype  表示共享内存空间类型 'i'  'f'  'c'
	data   共享内存空间初始数据
返回值:共享内存对象

obj.value  对该属性的修改查看即对共享内存读写


obj = Array(ctype,data)
功能: 开辟共享内存空间
参数: ctype  表示共享内存数据类型
      data   整数则表示开辟空间的大小,其他数据类型				表示开辟空间存放的初始化数据
返回值:共享内存对象

Array共享内存读写: 通过遍历obj可以得到每个值,直接可以通过索引序号修改任意值。

* 可以使用obj.value直接打印共享内存中的字节串


    '''
        Value实例
    '''

    from multiprocessing import  Value,Process
    import time
    import random


    # 创建共享内存

    money = Value('i',5000)


    #操作共享内存

    def man():
        for i in range(30):
            time.sleep(0.2)
            money.value += random.randint(1,1000)

    def girl():
        for i in range(30):
            time.sleep(0.15)
            money.value -= random.randint(100,800)

    m = Process(target=man)
    g = Process(target=girl)

    g.start()
    m.start()

    m.join()
    g.join()

    print("一月余额:",money.value)


    '''
        Array实例
    '''

    from multiprocessing import Process,Array

    shm = Array('c','dd')

    def fun():
        for i in shm:
            print(i)


    p = Process(target=fun)
    p.start()
    p.join()

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值