Python的imp速度非常慢

2024-09-24 22:22:34 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个基于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秒才开始。所有这些慢调用都是导入,但大多数都非常简单-例如,有3个实例是从__future__导入的:

^{pr2}$

这是怎么回事?一些附加信息:

  • 这个问题与升级到OS-X优胜美地同步发生。我不确定这是否是巧合,因为我们一直在更改代码。在
  • 我确实有循环进口,虽然这在过去从来不是问题。profiler似乎也没有指出这是问题所在,因为一些简单的非循环导入速度非常慢。在
  • 当发生这种情况时,该进程通过tornado的autoreload重新加载。我想这是不相关的,因为它没有出现在profiler中,但可能与autoreload使用{}有关?在

Tags: pysrcapivenvinitcommonuserstornado