我想在Python中创建像C一样的posix_memalign缓冲区
我曾经使用mmap在python中创建内存对齐的缓冲区
但是当我使用32位ubuntu时,我无法创建更多的mem对齐缓冲区。
因为我只能在 32位机器中完全 2G内存对齐缓冲区。
无论如何用Python中的另一个库替换mmap?
这是我在32位机器上的测试代码
import mmap
blk = 50*512*1024
def get_buf():
data = '\0'*blk
buf=mmap.mmap(-1, blk, mmap.MAP_SHARED)
buf.seek(0)
buf.write(data)
return buf
a=[]
for i in range(0, 4096):
try:
a.append(get_buf())
except Exception as e:
print i # will break when i = 77
break
答案 0 :(得分:0)
我解决了这个问题。 根本原因是我在32位机器上运行,并且进程可以获得最多3GB的映射虚拟内存地址(mmap映射数据到虚拟内存)。
不关心进程使用的堆栈,系统调用等等,这个过程几乎映射虚拟内存2~2.5GB。
此外,调用mmap.close()将释放虚拟地址,然后我有可用空间再次调用mmap。 原因如下:
解决方案:
如果有人找到更好的方法,欢迎回答