gpt4 book ai didi

python - 需要对返回大数据的函数进行惰性评估

转载 作者:行者123 更新时间:2023-12-01 05:22:20 27 4
gpt4 key购买 nike

现在真的很想念 Haskell。

我有这个代码:

for i in someFunc(arg0...argN):
//some logic

问题是 someFunc 的返回值很大,我的内存不足。

我以为我可以将它包装在生成器中,但这没有帮助,因为我不控制 someFunc,又名:

def gen_someFunc(someFunc):
for i in someFunc(arg0...argN):
yield i

没有帮助,因为 someFunc 仍然会立即评估。如何延迟计算 someFunc

最佳答案

在Python(或Haskell,这不是)中,您不能延迟地对返回完全物化对象的函数进行排队。使用该函数后可能会发生惰性,但如果数据一次性转储到您身上,您将无能为力。

也许有一些您还不知道的调用函数的参数,这会让您懒惰地评估它,但从这里给出的信息中我们不知道这一点。

如果您可以将对内存中的数据进行初始调用,则将其作为生成器调用的 Pythonic 方式将是

gen_some_func = iter(someFunc(arg0...argN))

不要先写这个函数然后再调用它。

def gen_someFunc(someFunc):
for i in someFunc(arg0...argN):
yield i

关于python - 需要对返回大数据的函数进行惰性评估,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22080457/

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