我想在Python中像C一样创建posix\u 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
我解决了这个问题。 根本原因是我在32位机器上运行,进程最多可以得到3GB的映射虚拟内存地址(mmap map data to virtual memory)。你知道吗
不在乎栈、syscall…等进程所用,进程几乎映射到虚拟内存2~2.5GB。你知道吗
另外,请致电mmap.关闭()将释放虚拟地址,然后我有足够的空间再次调用mmap。 原因如下:
解决方案:
如果有人找到更好的方法,欢迎回答
相关问题 更多 >
编程相关推荐