gpt4 book ai didi

memory - 更糟糕的罪过 : side effects or passing massive objects?

转载 作者:行者123 更新时间:2023-12-02 06:34:52 24 4
gpt4 key购买 nike

我在函数内的循环内有一个函数。内部函数获取并将一个大的数据向量存储在内存中(作为全局变量......我使用“R”,就像“S-Plus”)。该循环循环遍历要采集的一长串数据。外部函数启动该进程并传入要获取的数据集列表。

for (dataset in list_of_datasets) {
for (datachunk in dataset) {
<process datachunk>
<store result? as vector? where?>
}
}

我对内部函数进行了编程,以在移动到下一个数据集之前存储每个数据集,因此外部函数的所有工作都会对全局变量产生副作用……这是一个很大的禁忌。这比收集并返回一个巨大的、占用内存的向量向量更好还是更糟?有没有更好的第三种方法?

如果我将数据向量存储在数据库而不是内存中,答案会改变吗?理想情况下,我希望能够终止该函数(或由于网络超时而失败),而不会丢失终止之前处理的所有信息。

最佳答案

在外部函数中使用变量而不是全局变量。这可以让您充分利用两种方法:您不会改变全局状态,也不会复制大量数据。如果必须提前退出,只需返回部分结果即可。

(请参阅 R 手册中的“范围”部分: http://cran.r-project.org/doc/manuals/R-intro.html#Scope )

关于memory - 更糟糕的罪过 : side effects or passing massive objects?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/79709/

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