【问题标题】:How speed up xbrl file parsing in python lxml?如何加快 python lxml 中的 xbrl 文件解析?
【发布时间】:2019-11-14 15:45:39
【问题描述】:

我正在尝试通过 arelle 解析 xbrl 文件 (1.35Gb)。在调试过程中,我发现执行在ModelDocument.py:157 线上进行。它保持超过30分钟。 Python 进程占用大约 8Gb RAM 并缓慢增加内存消耗:

看起来 python 以 20-50Kb/s 的速度解析 xml,这非常慢。特别是如果我们考虑到 python 有C 优化代码。另请注意,我有 1 个核心 100% 加载,因此 CPU 做了一些繁重的工作(但究竟是什么?)

任何想法如何加快 xbrl 解析?

系统:Windows 10,Python 3.7.3(v3.7.3:ef4ec6ed12,2019 年 3 月 25 日,22:22:05)

【问题讨论】:

    标签: python lxml xbrl arelle


    【解决方案1】:

    从长远来看,也许我的回答与 XBRL 处理器的开发人员更相关,但我鼓励看看是什么让实例流式传输友好,特别是 XBRL 国际的以下候选推荐:

    https://specifications.xbrl.org/work-product-index-streaming-extensions-streaming-extensions-1.0.html

    以流式方式生产和使用大型 XBRL 实例有助于避免在解析调用中卡住的问题,即不是批量加载和解析整个实例,流式处理减少了内存压力,因为事实可以动态转换为处理器的内部存储器结构。

    一般来说,仅仅通过 1-2 GB 的数据流式处理简单的事情需要不到一分钟的时间。如果需要 30 分钟,看来处理器的实现有优化潜力。我不认为这只是 Arelle 的问题,而且我认为随着更多用户打开更大的文件,实施者会在某个时候开始研究这个问题。

    【讨论】:

    • 你说得对,但我有非流式 xbrl 文件:(
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-08-22
    • 1970-01-01
    • 1970-01-01
    • 2013-09-26
    • 1970-01-01
    • 2012-12-26
    • 1970-01-01
    相关资源
    最近更新 更多