内存共享是两个不同的进程共享内存的意思:同一块物理内存被映射到两个进程的各自的进程地址空间。这个物理内存已经被规定了大小(大小一定要比实际写入的东东大)以及名称。当需要写入时,找到内存名称,然后写入内存,等需要读取时候, 首先要知道你要读取多大(因为物理内存比你要读取的东东大,全部读取的话会读到一些“空”的东西),然后寻找对应名称的物理块,然后读取,就是这么简单。
一般我们对数据的操作是直接对文件进行读取,比如
def get_datas():
source_text_path = "路径"
with open(source_text_path, 'rb') as f:
data = f.readlines()
yield data
if __name__ == '__main__':
for e in get_datas():
deal_data(e) # 处理数据
这样虽然能处理数据,但是性能上却没有开辟共享内存来的快,在开辟共享内存来交互数据一个读入一次输出只要2步,而文件的操作至少需要4步,在数据量很大的情况下,就会浪费很多时间。
python中有mmap来开辟共享内存。
import mmap
mmap_file = None
##从内存中读取信息,
def read_mmap_info():
global mmap_file
mmap_file.seek(0)
##把二进制转换为字符串
info_str=mmap_file.read().translate(None, b'\x00').decode()
print(info_str)
##如果内存中没有对应信息&#x