共享内存

  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()