matplotlib导入速度极慢

时间:2014-10-17 08:53:54

标签: python performance matplotlib adobe

导入时间长得令人无法接受:

  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秒。

1 个答案:

答案 0 :(得分:16)

我遇到了同样的问题。我想,当你将matplotlib升级到更新版本时就会发生这种情况。字体缓存文件与新版本不兼容,但显然没有重新创建。而是每次动态创建字体列表。解决方案是删除matplotlib缓存目录(在我的情况下为~/.cache/matplotlib