Python导入速度极慢

时间:2014-12-09 21:45:37

标签: python macos python-2.7 tornado osx-yosemite

我有一个基于python / tornado构建的webapp。有时候(但并非总是如此!)起步非常慢。这是前10个最慢的电话:

       358926 function calls (350348 primitive calls) in 7.933 seconds

 Ordered by: cumulative time

 ncalls  tottime  percall  cumtime  percall filename:lineno(function)
      1    0.000    0.000    7.941    7.941 /Users/ysimonson/Desktop/dailymuse/themuse/venv/src/oz/oz/__init__.py:133(initialize)
  54/12    0.238    0.004    7.940    0.662 {__import__}
      1    0.164    0.164    1.853    1.853 /Users/ysimonson/Desktop/dailymuse/themuse/venv/src/oz/oz/plugins/sqlalchemy/__init__.py:1(<module>)
      1    0.001    0.001    1.842    1.842 ./themuse/common/__init__.py:1(<module>)
      1    0.002    0.002    1.811    1.811 ./themuse/common/actions/__init__.py:1(<module>)
      1    0.112    0.112    1.696    1.696 /Users/ysimonson/Desktop/dailymuse/themuse/venv/src/oz/oz/plugins/aws_cdn/__init__.py:1(<module>)
      1    0.001    0.001    1.294    1.294 ./themuse/common/actions/analytics.py:1(<module>)
      1    0.005    0.005    0.956    0.956 /Users/ysimonson/Desktop/dailymuse/themuse/venv/lib/python2.7/site-packages/sqlalchemy/__init__.py:9(<module>)
      1    0.000    0.000    0.951    0.951 ./themuse/api_v1/__init__.py:1(<module>)
      1    0.084    0.084    0.951    0.951 ./themuse/api_v1/api_v1_routes.py:1(<module>)

这个过程需要8秒钟才能启动。所有这些慢速调用都是导入,但大多数都非常简单 - 例如它是从__future__导入的3个实例:

from __future__ import absolute_import, division, print_function, with_statement, unicode_literals

这里发生了什么?一些额外的信息:

  • 问题恰逢OS X Yosemite的升级。我不确定这是否巧合,因为我们不断更改代码。
  • 我确实有圆形进口,但过去从未出现问题。分析器似乎也没有表明这个问题,因为一些简单的非循环导入进展非常缓慢。
  • 当发生这种情况时,该过程通过龙卷风autoreload重新加载。我猜这是不相关的,因为它没有出现在探查器中,但也许它与autoreload使用{{1}有某种关系}}?

1 个答案:

答案 0 :(得分:0)

尝试importlib.invalidate_caches()尝试使模块查找缓存无效。您还可以考虑重新安装模块,看看是否会产生影响。