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:比较中超出了最大递归深度'的主要内容,如果未能解决你的问题,请参考以下文章