Matplotlib AFM进口速度极慢
问题描述
导入时间长得令人无法接受:
from matplotlib import pylab as plt --> 3.0124739 secs
这是cProfile的输出,它清楚地显示问题出在afm.py,这是Adobe Font Metrics.的一些接口。Matplotlib版本为1.4.0-Ubuntu 14.04
5994612 function calls (5992123 primitive calls) in 4.702 seconds
Ordered by: internal time
ncalls tottime percall cumtime percall filename:lineno(function)
182 1.589 0.009 2.372 0.013 afm.py:220(_parse_kern_pairs)
215 0.746 0.003 1.420 0.007 afm.py:180(_parse_char_metrics)
1297990 0.410 0.000 0.410 0.000 {method 'split' of 'str' objects}
839978 0.288 0.000 0.288 0.000 {method 'readline' of 'file' objects}
2 0.254 0.127 4.185 2.093 font_manager.py:544(createFontList)
843308 0.170 0.000 0.170 0.000 {method 'startswith' of 'str' objects}
114276 0.168 0.000 0.205 0.000 afm.py:72(_to_list_of_floats)
1563800 0.125 0.000 0.125 0.000 {len}
839220 0.117 0.000 0.117 0.000 {method 'rstrip' of 'str' objects}
115290 0.116 0.000 0.119 0.000 {method 'decode' of 'str' objects}
117775 0.086 0.000 0.086 0.000 afm.py:56(_to_int)
20 0.061 0.003 0.061 0.003 {built-in method poll}
520 0.040 0.000 0.040 0.000 {method 'get_sfnt' of 'FT2Font' objects}
6910 0.036 0.000 0.036 0.000 {posix.stat}
3372 0.025 0.000 0.038 0.000 posixpath.py:336(normpath)
您知道如何修复/禁用它吗?
编辑:
回滚到1.3.1挽救了我的一天。现在运行时间为0.2秒。
解决方案
我遇到了同样的问题。我发现,当您将matplotlib
升级到较新的版本时,会发生这种情况。字体缓存文件与新版本不兼容,但显然没有重新创建。相反,每次在飞翔上都会创建字体列表。解决方案是删除matplotlib缓存目录(在我的示例中~/.cache/matplotlib
)
相关文章