我试图通过python跟踪一个错误,现在把我带到了ansi-c的mmap。
import os, mmap
filename = <name to ntfs file>
os.path.exists(filename) # is true
with open(filename, 'rb') as f:
# f.fileno() is 3 or 19 (not -1)
mmap.mmap(f.fileno(), 1, access=mmap.ACCESS_READ, offset=0)
# OSError [19]: No such device
# this is thrown by:
# cpython/Modules/mmapmodule.c:1188
# apparently b/c systems `mmap` (line 1177) can't
# find the memory.
这里是ntfs目录的挂载信息
jtschw2@compi:~/Code/cpython$ mount | grep labs
bmidata2:cliff.tcp on /labs/cliff type fuse.glusterfs (rw,relatime,user_id=0,group_id=0,default_permissions,allow_other,max_read=131072)
现在这一切都在CentOS7上。你认为我应该从哪里离开?这是不可映射的记忆,还是我们能解决的问题?
相关可能是this。使用numpy.memmap
时出现问题。
为什么没有卡纸时说卡纸!
答案 0 :(得分:3)
确实这是保险丝的问题。 Apparently,我的glusterfs版本在共享模式下仍然存在mmap问题,例如: mmap(.., flags=mmap.MAP_SHARED, ..)
。通过MAP_SHARED
替换MAP_PRIVATE
来解决此问题:
import os, mmap
filename = <name to ntfs file>
os.path.exists(filename) # is true
with open(filename, 'rb') as f:
mmap.mmap(
f.fileno(), 1, prot=mmap.PROT_READ,
flags=mmap.MAP_PRIVATE, offset=0)
然后一切都变得很好了!)