RecursionError:比较中超出了最大递归深度'

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了RecursionError:比较中超出了最大递归深度'相关的知识,希望对你有一定的参考价值。

在我的Python脚本中,我正在确定Azure Datalake存储Gen2中的目录大小。并且代码可以正常工作,直到我检查一个更大的目录为止。

import sys
from dbutils import FileInfo
from typing import List

sys.setrecursionlimit(2000)
root_path = "/mnt/datalake/.../"

def discover_size(path: str, verbose: bool = True):
  def loop_path(paths: List[FileInfo], accum_size: float):
    if not paths:
      return accum_size
    else:
      head, tail = paths[0], paths[1:]
      if head.size > 0:
        if verbose:
          accum_size += head.size / 1e6
        return loop_path(tail, accum_size)
      else:
        extended_tail = dbutils.fs.ls(head.path) + tail
        return loop_path(extended_tail, accum_size)

  return loop_path(dbutils.fs.ls(path), 0.0)

discover_size(root_path, verbose=True) 

首先查看OOM(内存不足)问题并添加

sys.setrecursionlimit(2000)

现在,另一个错误-

RecursionError: maximum recursion depth exceeded in comparison

如何克服这个问题。

答案

dbutils.fs.ls()的文档还远远不够完美,我手头没有DataBricks环境,但是在不使用实际递归的情况下,类似这样的方法可能会更好地工作,但是需要访问的路径列表。

dbutils.fs.ls()

以上是关于RecursionError:比较中超出了最大递归深度'的主要内容,如果未能解决你的问题,请参考以下文章

RecursionError:比较中超出了最大递归深度'

RecursionError:比较超过最大递归深度

RecursionError:超出最大递归深度

Binary Search RecursionError:比较超过最大递归深度

如何使用python绘制散点图?

kivy 中超出了最大递归深度,但仅在打包时超出,而不是在使用 python 开发应用程序时