Pythonはmmapを使ってメモリマッピングファイルの操作を実現します。


前言
メモリマップは通常、I/Oの性能を向上させることができます。メモリマップを使用すると、各アクセスごとに個別のシステム呼び出しを確立する必要がなく、バッファ間でデータをコピーする必要もなく、カーネルとユーザが直接メモリにアクセスすることができます。
説明
1)マッピングとは何ですか?
=>とは、オブジェクト(変数、物理など)に固有の別名を付けて、対応する関係を構築することです。
2)ファイルマップ:ディスク上のファイルの位置を、プロセス論理アドレス空間内のブロックサイズと同じ領域との間で一つずつ対応する。
3)マッピングした後、配列のようなものが得られ、ファイルの内容を変更する目的に達することができます。
長所
1)バイナリファイルに対する欠陥
通常はファイルを読む時、read()とwrite()の方法を使って、この2つの方法はすべてストリームの形式で行ったので、つまり1バイトは次から次へと1バイトの読み書きをします。ある位置から読み書きを開始するには、Seek()法を使ってファイルポインタを調整します。この方法は、バイナリファイルの操作が非常に不便です。バイナリファイルに対して、データをファイルに書き込む時は配列の形でデータをファイルにマッピングしてから、配列にアクセスしてファイルにアクセスします。この配列を通して再びファイルにデータを同期することができます。
2)いくつかの埋め込みデバイス、レジスタはメモリアドレス空間に組み込まれています。マッピング/dev/memの範囲から、これらのレジスタにアクセスできます。
例えば、ラズベリーパイには、pwm波形のジェネレータがあります。このジェネレータを使うなら、ラズベリー派のレジスターにアクセスします。実は、レジスタは物理アドレスのある特定の空間です。このとき、レジスタにアクセスするには、/dev/memのある範囲をメモリにマッピングし、メモリにアクセスするようにレジスタにアクセスする必要がある。
3)複数のプロセスが同じファイルをマッピングしても、プロセス通信の目的が達成されます。
複数のプロセスは同じファイルをそれぞれのメモリ空間にマッピングしていますが、実際には同じビューを見ても、プロセス通信の目的を実現できます。 
本編では、Pythonメモリマップライブラリ:mmapを詳細に紹介します。
mmap(ファイルを読む)
mmap関数を使ってメモリマップファイルを作成できます。関数の1番目のパラメータはファイル記述子であり、fileオブジェクトのfileno()関数で取得できます。第2のパラメータは、マッピングするファイルの部分サイズ(単位バイト)であり、この値が0の場合は、ファイル全体をマッピングし、このパラメータがファイルサイズより大きい場合は、ファイルを拡張します。
例は以下の通りです

import mmap

with open('    .txt','r') as f:
    with mmap.mmap(f.fileno(),0,access=mmap.ACCESS_READ) as m:
        print(m.read(10))
        print(m.read(10))
        print(m[:-10])
運転後の効果は以下の通りです。
输出
ここで読み書きは、10文字の読み取りを開始するなど、ファイルポインタに従って移動します。2回目の読み取りは11文字から始まり、始点には戻りません。スライスやseek関数により、ポインタをリセットすることができます。
accessパラメータについては、どのような方法でアクセスするかを示します。ここで読みます。
特に注意したいのは、windowsは作成長さが0のマッピングをサポートしていません。
write(書類を書く)
ファイルを書くのは簡単です。ここで直接コードを見ます。

import mmap

word = b'The'

with open('    .txt', 'r+') as f:
    with mmap.mmap(f.fileno(), 0, access=mmap.ACCESS_WRITE) as m:
        loc = m.find(word)
        m[loc:loc + len(word)] = b'lyj'
        print(m.read())
運転後、頭文字Theは私たちに「lyj」に置き換えられました。効果は以下の通りです。
追加
もちろん、ここではスライス書込み以外にも、write()などのファイル操作方法で操作することができます。ファイルと同じです。注意したいのはaccessがACCESSに等しい場合です。COPYでは、修正された内容はディスク上のファイルに書き込まれません。
ここでは、Pythonがmmapを使ってメモリマップファイルの操作を実現する文章について紹介します。Pythonメモリマッピングファイルの操作内容については、以前の文章を検索したり、下記の関連記事を見たりしてください。これからもよろしくお願いします。