gpt4 book ai didi

python - 在 Python 中内存整个 block

转载 作者:行者123 更新时间:2023-11-28 17:40:11 25 4
gpt4 key购买 nike

假设我有一些创建多个变量的代码:

# Some code

# Beginning of the block to memoize
a = foo()
b = bar()
...
c =
# End of the block to memoize

# ... some more code

我想记住上面的整个 block ,而不必明确说明 block 中创建/更改的每个变量或手动腌制它们。我如何在 Python 中执行此操作?

理想情况下,我希望能够用一些东西(if/elsewith 语句)包装它,并有一个标志,如果我想强制刷新。

从概念上来说,它会像:

# Some code

# Flag that I can set from outside to save or force a reset of the chache
refresh_cache = True

if refresh_cache == False
load_cache_of_block()
else:
# Beginning of the block to memoize
a = foo()
b = bar()
...
c = stuff()
# End of the block to memoize

save_cache_of_block()

# ... some more code

有没有什么方法可以做到这一点而不必显式地 pickle 代码中定义或更改的每个变量? (即在第一次运行结束时我们保存,稍后我们只重用这些值)

最佳答案

如何使用 locals() 获取局部变量列表,将它们存储在 pickle 中的字典中,然后使用(下面更具概念性):

for k,v in vars_from_pickle:
run_string = '%s=%s' % (k,v)
exec(run_string)

恢复您的本地堆栈。也许最好使用列表而不是字典来保留堆栈顺序。

关于python - 在 Python 中内存整个 block ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25414200/

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