gpt4 book ai didi

julia - 在 Julia 中检查内存

转载 作者:行者123 更新时间:2023-12-04 15:28:56 25 4
gpt4 key购买 nike

有包裹 Memoize.jl , 用它可以在 Julia 中内存。它的 @memoize 宏创建了一个字典。有没有办法检查这本字典?

例如,我执行后

@memoize f(n) = n ≤ 1 ? n : f(n-1) + f(n-1)

@show f(10)

我想检查已生成的 f 的中间值,因此 f(0)、f(1)、...、f(10)。

有人写过 Memo.jl作为 Memoize.jl 的替换或增强,允许自定义和检查。但是,这个包似乎没有维护。

最佳答案

关于 Julia 的一个好处是,像这样的包只是更多的 Julia 代码,而不是用 C 做一些不可能从主要语言中挖掘出来的事情。 Memoize 的代码非常简单。看看this line :

 fcachename = Symbol("##", f, "_memoized_cache")

这会告诉您缓存字典的名称,给定 f 作为正在内存的函数的名称。因此,让我们在运行示例代码后尝试访问具有该名称的变量:

julia> var"##f_memoized_cache"
IdDict{Any,Any} with 10 entries:
(7,) => 64
(6,) => 32
(4,) => 8
(5,) => 16
(9,) => 256
(10,) => 512
(2,) => 2
(8,) => 128
(1,) => 1
(3,) => 4

瞧!有实际的缓存。它只是一个 IdDict 在与方法定义相同的模块中具有奇怪的名称。 var"..." 语法是最近为具有“奇怪”名称的标识符添加的自定义字符串文字语法——它是执行 eval(Symbol("##f_memoized_cache ")).

当然,由于这不是 Memoize API 的官方文档部分,您不能指望它不会改变,但它目前有效。我不确定你是否想要一个更官方的 API,但如果你想要,你可以打开一个问题,要求将其作为一项新功能。

关于julia - 在 Julia 中检查内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61685155/

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