该模块提供了一个 SharedMemory
类,用于分配和管理多核或对称多处理器(SMP)机器上进程间的共享内存。为了协助管理不同进程间的共享内存生命周期,multiprocessing.managers
模块也提供了一个 BaseManager
的子类: SharedMemoryManager
。
本模块中,共享内存是指 “System V 类型” 的共享内存块(虽然实现方式可能不完全一致)而不是 “分布式共享内存”。这种类型的的共享内存允许不同进程读写一片公共(或者共享)的易失性存储区域。一般来说,进程被限制只能访问属于自己进程空间的内存,但是共享内存允许跨进程共享数据,从而避免通过进程间发送消息的形式传递数据。与通过磁盘、套接字或者其他要求序列化、反序列化和复制数据的共享形式相比,直接通过内存共享数据拥有更出色的性能
下面简单使用一下
a.py 文件
from multiprocessing import shared_memory
shm_a = shared_memory.ShareableList(['张三', 2, 'abc'], name='123')
b.py 文件
from multiprocessing import shared_memory
shm_b = shared_memory.ShareableList(name='123')
print(shm_b[0]) # ‘张三’
print(shm_b[1]) # 2
print(shm_b[2]) # ‘abc
name指定一个字符串,如果不指定系统就会生成一个不重复的字符串
可以在同一个py文件,也可以在不同的py文件里
class multiprocessing.shared_memory.
ShareableList
(sequence=None, *, name=None)
提供一个可修改的类 list 对象,其中所有值都存放在共享内存块中。这限制了可被存储在其中的值只能是 int
, float
, bool
, str
(每条数据小于10M), bytes
(每条数据小于10M)以及 None
这些内置类型。它另一个显著区别于内置 list
类型的地方在于它的长度无法修改(比如,没有 append, insert 等操作)且不支持通过切片操作动态创建新的 ShareableList
实例。
sequence 会被用来为一个新的 ShareableList
填充值。 设为 None
则会基于唯一的共享内存名称关联到已经存在的 ShareableList
。
name 是所请求的共享内存的唯一名称,与 SharedMemory
的定义中所描述的一致。 当关联到现有的 ShareableList
时,则指明其共享内存块的唯一名称并将 sequence
设为 None
。
count
(value)
返回 value
出现的次数。
index
(value)
返回 value
首次出现的位置,如果 value
不存在, 则抛出 ValueError
异常。
format
包含由所有当前存储值所使用的 struct
打包格式的只读属性。
今天的文章python 共享内存 SharedMemory分享到此就结束了,感谢您的阅读。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/11442.html