AnyMath 文档

内存映射I/O

Mmap(文件的内存映射)的低级别模块。

Mmap.Anonymous(name::AbstractString="", readonly::Bool=false, create::Bool=true)

创建一个 伊俄-类似于创建零出mmapped-内存的对象,该内存不与文件绑定,以便在 mmap,mmap. 使用的 共享阵列 用于创建共享内存阵列。

*例子*

julia> using Mmap

julia> anon = Mmap.Anonymous();

julia> isreadable(anon)
true

julia> iswritable(anon)
true

julia> isopen(anon)
true
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)

创建一个 阵列 其值使用内存映射链接到文件。 这提供了一个方便的方法来处理太大的数据,以适应计算机的内存。

类型是一个 阵列{T,N} 与位类型的元素 T 和尺寸 N 这决定了如何解释数组的字节。 请注意,文件必须以二进制格式存储,并且不可能进行格式转换(这是操作系统的限制,而不是Julia)。

暗淡无光 是元组还是单 整数指定数组的大小或长度。

该文件通过流参数传递,无论是作为一个开放的 [美]或文件名字符串。 初始化流时,使用 "r" 对于"只读"数组,以及 "w+" 创建用于将值写入磁盘的新数组。

如果没有 类型 参数指定,默认为 向量{UInt8}.

例如,如果要跳过文件中的标头,也可以指定偏移量(以字节为单位)。 偏移量的默认值是 [美]梦.

成长 关键字参数指定磁盘文件是否应增长以适应请求的数组大小(如果总文件大小为<请求的数组大小)。 需要写入权限才能增长文件。

共享 关键字参数指定结果是否 阵列 对它所做的更改将对映射同一文件的其他进程可见。

例如,下面的代码

# 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-由-n 矩阵{Int},链接到与stream关联的文件 s.

一个更便携的文件将需要编码字大小-32位或64位-和标题中的endianness信息。 在实践中,考虑使用HDF5(可与内存映射一起使用)等标准格式对二进制数据进行编码。

mmap(io, BitArray, [dims, offset])

创建一个 比特阵列其值使用内存映射链接到文件;它具有相同的目的,以相同的方式工作,并具有相同的参数,如 mmap,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 比特阵列,链接到与stream关联的文件 伊俄.

Mmap.sync!(array)

强制内存映射的内存中版本之间的同步 阵列比特阵列和磁盘版本。