python - 在 python 中使用 mmap

标签 python mmap

有人可以解释一下在这种情况下 0 是如何影响 python 中的 mmap 的吗:

mmap.mmap(0 , 256, "some tag")

我以为我总是需要传输文件描述符而不是 0,那为什么是 0?

最佳答案

从阅读 CPython 2.7 源代码来看,似乎在 Windows 上,指定 fileno = 0 与指定 fileno = -1 具有相同的效果,后者的意思是“映射匿名内存”。

在 Unix 上仅接受 -1:在我的 64 位 Ubuntu 机器上使用 Python 2.6.5,mmap.mmap(0, 256) 失败并返回 errno=19(没有这样的设备)mmap.mmap(-1, 256) 工作正常。

底线:fileno = 0fileno = -1 的非可移植 Windows 变体。它可能会被弃用(代码中甚至有一个注释掉的警告)。

附言有问题的 CPython 源文件是 Modules/mmapmodule.c

关于python - 在 python 中使用 mmap,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6860180/

相关文章:

python - 理解 scipy basin hopping 优化函数的例子

python - 使用 tweepy 流式传输 Twitter 时间线

c - 为什么我们可以分配一个 1 PB (10^15) 的数组并访问最后一个元素,但不能释放它?

c - Linux 中 MMAP 值的生命周期

c - 我如何通过网络代理 mmap 读取和写入?

c - mmap() 返回未在函数之间传递

python : can I get a memoryview or a bytearray mapping to a mmap

python - 根据最近的值合并 Pandas 数据帧

python - Django 错误地期望 id 列

python - Flask-SQLAlchemy - SQL 操作