如何重用函数的输出? [复制]
Posted
技术标签:
【中文标题】如何重用函数的输出? [复制]【英文标题】:How to reuse an output of a function? [duplicate] 【发布时间】:2021-02-13 22:39:53 【问题描述】:我正在尝试在其他函数中重用一个耗时函数的输出,而无需再次重新运行它。 示例:
%%time
def func1():
sleep(100)
y = 123
return y
func1()
持续时间:100 秒
%%time
def func2():
x = func1()
return x
func2()
持续时间:100 秒
我希望 func2 重用 fun1 的输出,而无需再次等待另一个 100。 在此先感谢:)
【问题讨论】:
【参考方案1】:您可以使用functools.lru_cache
执行任务:
from time import sleep
from functools import lru_cache
@lru_cache
def func1():
sleep(3)
y = 123
return y
print(func1()) # <-- this waits 3 seconds
print(func1()) # <-- this is printed immediately
【讨论】:
这似乎是满足我需求的一个很好的解决方案。谢谢!但是如果函数不纯,最好的选择是什么?假设每次 x 运行我需要接收不同的输出?因为在脚本终止并重新启动之前,lru_cache 不会被更改,对吗? @mor2778lru_cache
根据函数参数缓存函数。所以如果你给你的函数提供不同的参数,它会沿着这个参数缓存输出。
知道了。非常感谢您。我将开始深入挖掘 lur_cache :)以上是关于如何重用函数的输出? [复制]的主要内容,如果未能解决你的问题,请参考以下文章