从“-ximporttime”跟踪生成瀑布。
importtime-waterfall的Python项目详细描述
重要瀑布
通过-Ximporttime
跟踪生成瀑布。
安装
pip install importtime-waterfall
note:importtime-waterfall
需要python3.7+
用法
importtime-waterfall
提供同名的单个可执行文件。
importtime-waterfall
将模块名作为位置参数。这是
将被分析的模块。
--include-interpreter-startup
包括始终作为 解释器启动。这些通常都不有趣,所以就留下来了 默认情况下不在。
--har
输出为HTTP Archive或“har”文件。是的,这些不是真的 http请求,但使用标准化的 数据格式。
不幸的是,har没有微秒的分辨率,所以在har中 输出为*1000(1μs=>;1毫秒)。
使用输出的最简单方法是将其粘贴到 har viewer。
我使用以下选项:
$ importtime-waterfall importtime_waterfall --har | xclip -selection c
xclip获取输出并将其放入剪贴板。
或者,您可以重定向到一个文件(> foo.har
)并以这种方式上传它。
一旦粘贴到查看器中,就可以检查输出。
阻塞的导入时间表示为“waiting”(紫色)和self time 表示为“接收”(灰色)。一般在寻找慢速模块时 找那些灰色大块的。
--graph
(这是默认显示)。将输出显示为树。这不是
在已经显示的python -Ximporttime
基础上添加了很多内容(但是
对于开发/调试此工具很有用)。我想这是人之常情
而不是相反,所以这是什么。
模块名称旁边显示的时间是以μs为单位的自计时。
$ importtime-waterfall importtime_waterfall importtime_waterfall (419) argparse (864) re (599) enum (661) sre_compile (270) _sre (109) sre_parse (336) sre_constants (339) copyreg (161) gettext (1056) locale (820) datetime (768) time (234) math (57) _datetime (154) json (254) json.decoder (446) json.scanner (481) _json (193) json.encoder (443) subprocess (628) signal (1030) errno (101) _posixsubprocess (40) select (51) selectors (543) collections.abc (184) threading (578) traceback (394) linecache (162) tokenize (911) token (178) _weakrefset (217) typing (1469)
成功案例
我用这个找到一个24% speedup in ^{
工作原理
importtime-waterfall
在
设置^{importtime-waterfall
接受
选择5个最佳(按总时间)并使用该结果。它解析
“导入时间:”行,然后输出。