gpt4 book ai didi

julia - 使用 varinfo 在 Julia 中通过循环保存变量大小

转载 作者:行者123 更新时间:2023-12-04 10:55:06 28 4
gpt4 key购买 nike

我正在尝试查看我正在使用的变量的大小如何在循环的每次迭代中增加。我不确定哪些变量的大小在增加,因此我想捕获所有变量。为此,我想使用 varinfo() ,但由于这会输出一个 Markdown 表,我无法访问它。有没有办法将 Markdown 表转换为更有用的格式,或者通常在环境中保存变量的大小?

理想情况下,我希望输出一个数据帧,其行数或列数与循环数一样多,并且每个相应循环中保存的每个变量的大小。

最佳答案

我真的很喜欢你出于调试目的的想法:-)

此代码的灵感来自:https://github.com/JuliaLang/julia/blob/master/stdlib/InteractiveUtils/src/InteractiveUtils.jl

using  DataFrames

function debug_list_vals(m::Module=Main)
res = DataFrame()
vs = [v for v in sort!(names(m)) if isdefined(m, v)]
for v in vs
value = getfield(m, v)
if !(value===Base || value===Main || value===Core ||
value===InteractiveUtils || value===debug_list_vals)
append!(res, DataFrame(v=v,size=Base.summarysize(value),
summary=summary(value)))
end
end
res
end

现在让我们试一试:
julia> for i in 1:3
push!(some_array, i)
println("i=$i ::", debug_list_vals())
end
i=1 ::2×3 DataFrame
│ Row │ v │ size │ summary │
│ │ Symbol │ Int64 │ String │
├─────┼────────────┼───────┼──────────────────────────┤
│ 1 │ ans │ 48 │ 1-element Array{Int64,1} │
│ 2 │ some_array │ 48 │ 1-element Array{Int64,1} │
i=2 ::2×3 DataFrame
│ Row │ v │ size │ summary │
│ │ Symbol │ Int64 │ String │
├─────┼────────────┼───────┼──────────────────────────┤
│ 1 │ ans │ 56 │ 2-element Array{Int64,1} │
│ 2 │ some_array │ 56 │ 2-element Array{Int64,1} │
i=3 ::2×3 DataFrame
│ Row │ v │ size │ summary │
│ │ Symbol │ Int64 │ String │
├─────┼────────────┼───────┼──────────────────────────┤
│ 1 │ ans │ 64 │ 3-element Array{Int64,1} │
│ 2 │ some_array │ 64 │ 3-element Array{Int64,1} │

关于julia - 使用 varinfo 在 Julia 中通过循环保存变量大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59257889/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com