在Julia 1.0.0中本地保存大型数字输出到文件
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在Julia 1.0.0中本地保存大型数字输出到文件相关的知识,希望对你有一定的参考价值。
我正在尝试在hpc-cluster中运行程序。不幸的是,我无法在群集上安装外部程序包(例如,JLD2)。这是一个暂时的问题,应该得到修复。
我不想等待所有那些时间,我想知道是否有任何方法可以在没有外部依赖性的情况下保存Julia中的大输出(2-3 GB)。大多数输出是数字矩阵。我之前使用的是JLD2,它以HDF5格式存储数据。
额外问题:使用shell命令是否有解决方法,例如使用管道来获取输出并使用awk // grep来保存数据? (像julia -p 12 main.jl | echo "file"
)。
答案
你可以试试Serialization
标准库。
要处理多个变量,您可以按顺序存储它们:
x = rand(10)
y = "foo"
using Serialization
# write to file
open("data.out","w") do f
serialize(f, x)
serialize(f, y)
end
# load from file
open("data.out") do f
global x2, y2
x2 = deserialize(f)
y2 = deserialize(f)
end
或者你可以把它们放在Dict
中,并存储它。
另一答案
你可以write作为二进制。有点像
julia> x = rand(2,2);
julia> write("test.out", x)
julia> y = reshape(reinterpret(Float64, read("test.out")), 2,2)
julia> x == y
true
如果它只是缺少的HDF5,你可以使用例如NPZ.jl。
以上是关于在Julia 1.0.0中本地保存大型数字输出到文件的主要内容,如果未能解决你的问题,请参考以下文章