Python中递归期间的内存使用
我实现了一个递归函数,它以numpy数组作为参数。 以下是简化版本:Python中递归期间的内存使用,python,memory,memory-management,recursion,Python,Memory,Memory Management,Recursion,我实现了一个递归函数,它以numpy数组作为参数。 以下是简化版本: def rec(arr): rec(arr[indices]) 在每次递归调用中,我使用数组的一部分,该部分由一些索引索引 我的问题是关于内存负载:python如何处理这个问题?它是否在每次调用时复制数组?这取决于索引的性质。如果是切片,就没有拷贝。另一方面,如果您正在使用,则会制作一份副本 我建议阅读NumPy教程(即使本节不涉及花哨的索引)。这取决于索引的性质。如果是切片,就没有拷贝。另一方面,如果您正在使
def rec(arr):
rec(arr[indices])
在每次递归调用中,我使用数组的一部分,该部分由一些索引索引
我的问题是关于内存负载:python如何处理这个问题?它是否在每次调用时复制数组?这取决于
索引的性质。如果是切片,就没有拷贝。另一方面,如果您正在使用,则会制作一份副本
我建议阅读NumPy教程(即使本节不涉及花哨的索引)。这取决于索引的性质。如果是切片,就没有拷贝。另一方面,如果您正在使用,则会制作一份副本
我建议您阅读NumPy教程(即使本节没有介绍奇妙的索引)。我看不出递归与您的问题有任何关系。如果你使用循环,你认为内存使用会有所不同?@Bakuriu:我猜递归的相关性在于15级深度递归意味着有15段arr
同时处于活动状态。对于迭代,情况可能是这样,也可能不是这样。但我同意这个问题似乎完全是关于arr[index]
的内存使用,而不是关于递归本身。我看不出递归和你的问题之间有任何关系。如果你使用循环,你认为内存使用会有所不同?@Bakuriu:我猜递归的相关性在于15级深度递归意味着有15段arr
同时处于活动状态。对于迭代,情况可能是这样,也可能不是这样。但我同意,这个问题似乎完全是关于arr[index]
的内存使用,而不是递归本身。index是一个索引数组,索引一片arr。因此它不能正确复制?@johntropy:如果index
的元素是整数,那就是奇特的索引,所以就制作了一个副本。索引是索引arr片段的索引数组。所以它不能正确地制作副本?@johntropy:如果索引的元素是整数,那就是奇特的索引,所以就制作了一个副本。