用法一
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。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。