Python mmap的使用-檔案記憶體對映
mmap是一種虛擬記憶體對映檔案的方法,即將一個檔案或者其它物件對映到程式的地址空間,實現檔案磁碟地址和程式虛擬地址空間中一段虛擬地址的一一對映關係。
優點:
- 普通檔案被對映到虛擬地址空間後,程式可以向訪問普通記憶體一樣對檔案進行訪問,在有些情況下可以提高IO效率
- 它佔用實體記憶體空間少,可以解決記憶體空間不足的問題,適合處理超大檔案
mmap在Windows和Linux平臺上的行為有所不同。例如,Windows不支援建立空對映。
Python通過mmap模組支援檔案記憶體對映,文件:https://docs.python.org/3.5/library/mmap.html。
讀操作
import mmap
f = open('test.txt', 'r') # r->讀
""" mmap用來建立記憶體對映檔案
第一個引數是檔案描述符
第二個引數是對映長度,0代表整個檔案
第三個引數是訪問模式,ACCESS_READ:讀;ACCESS_WRITE:寫:
ACCESS_COPY:寫時複製,不會把更改寫入到檔案,使用flush把更改寫到檔案
"""
with mmap.mmap(f.fileno(), 0, access=mmap.ACCESS_READ) as m:
print('讀取前10個位元組 :', m.read(10))
print('還可以像操作字串一樣操作:', m[:10])
print('下一個10位元組 :', m.read(10))
# mm.close()
f.close()
寫操作
import mmap
word = b'World'
reversed = word[::-1]
print('查詢:', word)
print('替換:', reversed)
with open('test.txt', 'r+') as f: # r+,不是w
with mmap.mmap(f.fileno(), 0) as m:
m.seek(0) # 定位到檔案頭
loc = m.find(word)
m[loc:loc + len(word)] = reversed
m.flush()
記憶體對映檔案可以像字串一樣操作,我們可以在其上應用正規表示式。
相關文章
- mmap記憶體對映記憶體
- 從記憶體對映mmap說開去記憶體
- Java使用記憶體對映實現大檔案的上傳Java記憶體
- VC++中用記憶體對映檔案 (轉)C++記憶體
- 二進位制檔案記憶體對映記憶體
- 一個記憶體檔案對映使用者類 (轉)記憶體
- 記憶體對映檔案詳解-----C++實現(即一塊記憶體和一個檔案相對映對應)記憶體C++
- windows核心程式設計--記憶體對映檔案Windows程式設計記憶體
- 居然這就是C++記憶體對映檔案?!C++記憶體
- 從核心世界透視 mmap 記憶體對映的本質(原理篇)記憶體
- 記憶體對映記憶體
- 非同步日誌 vs. 記憶體對映檔案非同步記憶體
- C#記憶體對映大檔案並使用Marshal解析結構體資訊C#記憶體結構體
- Android入門教程 | mmap 檔案對映介紹Android
- Java 中使用記憶體對映檔案需要考慮的 10 個問題Java記憶體
- Win 95下記憶體對映檔案的工作原理及使用方法 (轉)記憶體
- 從核心世界透視 mmap 記憶體對映的本質(原始碼實現篇)記憶體原始碼
- Linux 記憶體管理:記憶體對映Linux記憶體
- Java記憶體對映,上G大檔案輕鬆處理Java記憶體
- 溫故之.NET程式間通訊——記憶體對映檔案記憶體
- C# .Net 多程式同步 通訊 共享記憶體 記憶體對映檔案 Memory MappedC#記憶體APP
- JAVA記憶體對映檔案實現多執行緒下載Java記憶體執行緒
- 17、python對記憶體的使用Python記憶體
- 【IPC程式間通訊之三】記憶體對映檔案Mapping FileC程式記憶體APP
- mmap共享儲存對映(儲存I/O對映)系列詳解
- JavaScript對記憶體的使用JavaScript記憶體
- RMAN 對記憶體的使用記憶體
- Linux AS 使用記憶體檔案系統Linux記憶體
- PYTHON如何在記憶體中生成ZIP檔案Python記憶體
- linux mmap應用與驅動共享記憶體Linux記憶體
- hibernate筆記–實體類對映檔案”*.hbm.xml”詳解筆記XML
- Mybatis對映檔案簡介MyBatis
- PostgreSQL 物理檔案對映解析SQL
- Linux系統程式設計—共享記憶體之mmapLinux程式設計記憶體
- eclipse 增加記憶體的方法、修改配置檔案 記憶體優化Eclipse記憶體優化
- 共享記憶體對映(linux程式與執行緒學習筆記)記憶體Linux執行緒筆記
- 載入Mapper對映檔案APP
- linux檔案存在記憶體裡Linux記憶體