用法一
mmap(io::Union{IOStream,AbstractString,Mmap.AnonymousMmap}[, type::Type{Array{T,N}}, dims, offset]; grow::Bool=true, shared::Bool=true)
mmap(type::Type{Array{T,N}}, dims)
使用內存映射創建一個Array
,其值鏈接到文件。這提供了一種方便的方式來處理太大而無法放入計算機內存的數據。
該類型是一個Array{T,N}
,其bits-type 元素為T
,維度為N
,確定如何解釋數組的字節。請注意,文件必須以二進製格式存儲,並且不能進行格式轉換(這是操作係統的限製,而不是 Julia)。
dims
是一個元組或單個
,指定數組的大小或長度。Integer
該文件通過流參數傳遞,可以是打開的
或文件名字符串。當您初始化流時,使用IOStream
"r"
作為"read-only" 數組,並使用"w+"
創建一個用於將值寫入磁盤的新數組。
如果未指定 type
參數,則默認值為 Vector{UInt8}
。
或者,如果您想跳過文件中的標頭,您可以指定偏移量(以字節為單位)。偏移量的默認值是 IOStream
的當前流位置。
grow
關鍵字參數指定是否應增大磁盤文件以適應請求的數組大小(如果總文件大小小於請求的數組大小)。增加文件需要寫入權限。
shared
關鍵字參數指定生成的Array
和對其所做的更改是否對映射同一文件的其他進程可見。
例如下麵的代碼
# Create a file for mmapping
# (you could alternatively use mmap to do this step, too)
using Mmap
A = rand(1:20, 5, 30)
s = open("/tmp/mmap.bin", "w+")
# We'll write the dimensions of the array as the first two Ints in the file
write(s, size(A,1))
write(s, size(A,2))
# Now write the data
write(s, A)
close(s)
# Test by reading it back in
s = open("/tmp/mmap.bin") # default is read-only
m = read(s, Int)
n = read(s, Int)
A2 = mmap(s, Matrix{Int}, (m,n))
創建一個 m
-by- n
Matrix{Int}
,鏈接到與流 s
關聯的文件。
更便攜的文件將需要在標題中對字長(32 位或 64 位)和字節序信息進行編碼。在實踐中,考慮使用 HDF5 等標準格式(可與內存映射一起使用)對二進製數據進行編碼。
用法二
mmap(io, BitArray, [dims, offset])
使用內存映射創建一個
,其值鏈接到一個文件;它與 BitArray
具有相同的目的、相同的工作方式和相同的參數,但字節表示不同。mmap
例子
julia> using Mmap
julia> io = open("mmap.bin", "w+");
julia> B = mmap(io, BitArray, (25,30000));
julia> B[3, 4000] = true;
julia> Mmap.sync!(B);
julia> close(io);
julia> io = open("mmap.bin", "r+");
julia> C = mmap(io, BitArray, (25,30000));
julia> C[3, 4000]
true
julia> C[2, 4000]
false
julia> close(io)
julia> rm("mmap.bin")
這將創建一個 25×30000 BitArray
,鏈接到與流 io
關聯的文件。
相關用法
- Julia Mmap.Anonymous用法及代碼示例
- Julia Math.clamp!用法及代碼示例
- Julia Math.rem2pi用法及代碼示例
- Julia Matrix方法用法及代碼示例
- Julia Math.sincos方法用法及代碼示例
- Julia Multimedia.istextmime用法及代碼示例
- Julia Math.ldexp用法及代碼示例
- Julia Math.cbrt用法及代碼示例
- Julia Meta.quot用法及代碼示例
- Julia Math.mod2pi用法及代碼示例
- Julia Multimedia.showable用法及代碼示例
- Julia Math.frexp用法及代碼示例
- Julia Math.modf用法及代碼示例
- Julia Math.exponent用法及代碼示例
- Julia Multimedia.MIME用法及代碼示例
- Julia MathConstants.ℯ用法及代碼示例
- Julia Math.clamp用法及代碼示例
- Julia MathConstants.catalan用法及代碼示例
- Julia Math.hypot用法及代碼示例
- Julia MathConstants.pi用法及代碼示例
- Julia MPFR.BigFloat方法用法及代碼示例
- Julia Math.@evalpoly用法及代碼示例
- Julia Math.deg2rad用法及代碼示例
- Julia MathConstants.golden用法及代碼示例
- Julia MathConstants.eulergamma用法及代碼示例
注:本文由純淨天空篩選整理自julialang.org 大神的英文原創作品 Mmap.mmap — Function。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。