如何确定导致库导入缓慢的原因?

Posted

技术标签:

【中文标题】如何确定导致库导入缓慢的原因?【英文标题】:How to determine what is causing a library to import slowly? 【发布时间】:2019-04-29 22:07:11 【问题描述】:

当我导入 Pandas 或 Numpy 时,它会立即导入,但是当我导入此处找到的库时

https://github.com/ContextLab/supereeg

导入需要很长时间。我正在更新自己的分叉副本,并希望减少加载所需的时间。我该如何诊断为什么需要这么长时间?

【问题讨论】:

我将首先计算导入supereeg/__init__.py (github.com/ContextLab/supereeg/blob/master/supereeg/__init__.py) 中的每个模块需要多长时间,因为这就是您在执行import supereeg 时所调用的。但是,快速浏览一下,我看到这里的一些模块(例如 model.py 调用 from .brain import Brain 可能会诱使您认为 model.py 是问题所在,因此您必须小心 看看***.com/questions/50554374/…。也许那里的提示可以帮助您入门。 有多长?毫秒/秒/分钟?您可以先在 __init__.py 中的每次导入之间打印一些内容,以粗略了解时间是如何花费的。 【参考方案1】:

它可能会在导入时进行昂贵的初始化,这可能被认为是错误的形式。无论哪种方式,您都可以使用 Python 的内置分析器进行查找:

import cProfiler
cProfiler.run('import supereeg')

输出在任何时候都不是最容易解析的,但可以让您了解正在发生的事情。有关如何存储/排序等报告的更多信息,请查看 https://docs.python.org/3.6/library/profile.html 的精美文档

【讨论】:

以上是关于如何确定导致库导入缓慢的原因?的主要内容,如果未能解决你的问题,请参考以下文章

导致Tomcat启动过程缓慢的原因及解决方法

导致Tomcat启动过程缓慢的原因及解决方法

诊断视图渲染缓慢的原因

如何确定导致 iOS Safari 中“样式无效”的原因?

如何调试非常慢(客户端)的网站模板?

如何确定由我的 Ajax 调用导致的内部服务器错误的原因?