c++ mmap写入速度_python -mmap-内存共享

为了实现C#与Python之间的高效数据交换,本文探讨了利用Python的mmap模块实现内存共享的方法。通过将数据直接写入和读取内存,可以避免频繁的文件读写操作,提高数据交换速度。在Unix系统中,mmap.MAP_SHARED标志允许不同进程间的内存共享,而mmap.PROT_READ和mmap.PROT_WRITE则确保了数据的读写权限。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一些工程是用C#编写的,但是用到了机器学习。当前很多框架都是基于python的,他们之间有时候涉及到大量的数据交换,要是能进行内存共享就好了。无论C#还是python将需要交换的数据存入内存,其他程序处理好这些数据后再重写入内存,这样不但方便,而且速度也会提高不少。

其实python中就有一个函数这样的函数mmap来实现内存共享。

内存共享是两个不同的进程共享内存的意思:同一块物理内存被映射到两个进程的各自的进程地址空间。这个物理内存已经被规定了大小(大小一定要比实际写入的东东大)以及名称。当需要写入时,找到内存名称,然后写入内存,等需要读取时候, 首先要知道你要读取多大(因为物理内存比你要读取的东东大,全部读取的话会读到一些“空”的东西),然后寻找对应名称的物理块,然后读取,就是这么简单。

假设a是一个int16的数组:

将a写入内存块

import mmap
import contextlib
mmap_file = mmap.mmap(-1, 4*a.size, access = mmap.ACCESS_WRITE, tagname = 'sharemem')
mmap_file.write(a)

当你想读取的时候:

with contextlib.closing(mmap.mmap(-1, 4*np.array(b).size, tagname='sharemem', access=mmap.ACCESS_READ)) as 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值