2017-10-19 10 views
-1

私はansi-cのmmapに私を連れてきて、Pythonでバグに追いかけようとしています。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. 

はここ

[email protected]:~/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上にあるNTFSディレクトリのマウント情報です。ここからどこへ行くべきだと思いますか?これはマップできない記憶ですか、それとも修正できるものですか?

関連性はおそらくthisです。 numpy.memmapを使用しているときに問題が発生しました。

紙詰まりがないと紙詰まりが発生するのはなぜですか?

+0

あなたはビルトインのpythonのmmap、またはnumpy.memmapを使用していますか?あなたの質問は矛盾しています。 – mbrig

+0

'numpy.memmap .__ init__'はnumpy/core/memmap.py:264の' mmap.mmap'を使います。 – Jus

+0

実際のコードを表示していませんか?あなたの質問にそれを編集してください、または誰もあなたを助けることができません。 (MCVEについてのスタックオーバーフローのガイドラインを参照) – mbrig

答えて

1

実際、ヒューズには問題があります。 Apparently、glusterfsの私のバージョンはまだ共有モードでmmapに問題があります。 mmap(.., flags=mmap.MAP_SHARED, ..)。これはMAP_PRIVATEMAP_SHAREDを交換することで解決されます。

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) 

その後、すべてが再び桃です:)

関連する問題