在 Julia 1.0.0 中将大数字输出保存到本地文件
Save large numeric output to file natively in Julia 1.0.0
我正在尝试 运行 hpc-cluster 中的程序。不幸的是,我无法在集群上安装外部包(例如 JLD2)。这是一个临时问题,应该得到修复。
我不想一直等待,我想知道是否有任何方法可以在没有外部依赖性的情况下在 Julia 中保存大输出 (2-3 GB)。大多数输出是数字矩阵。我之前使用的是 JLD2,它以 HDF5 格式存储数据。
额外问题:是否有使用 shell 命令解决此问题的方法,例如使用管道获取输出并使用 awk//grep 保存数据? (类似于 julia -p 12 main.jl | echo "file"
)。
您可以 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。
您可以试试 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
中,然后存储它。
我正在尝试 运行 hpc-cluster 中的程序。不幸的是,我无法在集群上安装外部包(例如 JLD2)。这是一个临时问题,应该得到修复。
我不想一直等待,我想知道是否有任何方法可以在没有外部依赖性的情况下在 Julia 中保存大输出 (2-3 GB)。大多数输出是数字矩阵。我之前使用的是 JLD2,它以 HDF5 格式存储数据。
额外问题:是否有使用 shell 命令解决此问题的方法,例如使用管道获取输出并使用 awk//grep 保存数据? (类似于 julia -p 12 main.jl | echo "file"
)。
您可以 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。
您可以试试 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
中,然后存储它。