共享内存
-
通信原理:在内中开辟一块空间,进程可以写入内容和读取内容完成通信,但是每次写入内容会覆盖之前内容。
-
实现方法
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()