【问题标题】:Python imports are very slow - Anaconda python 2.7Python 导入非常慢 - Anaconda python 2.7
【发布时间】:2015-12-18 13:59:33
【问题描述】:

我的 python 导入语句变得非常缓慢。我正在使用 Anaconda 包在本地运行 python 2.7。导入模块后,我写的代码运行得非常快,似乎只是导入需要很长时间。

例如,我运行了一个“tester.py”文件,代码如下:

import timeit

x = timeit.timeit('import numpy as np')
print 'imported numpy in %s seconds'%x

x = timeit.timeit('import pandas as pd')
print 'imported pandas in %s seconds'%x

x = timeit.timeit('from Tkinter import Frame,Tk, Label, Checkbutton')
print 'imported Tkinter in %s seconds'%x

x = timeit.timeit('from tkFileDialog import askopenfilenames, asksaveasfilename')
print 'imported tkFileDialog in %s seconds'%x

x = timeit.timeit('import tkMessageBox')
print 'imported tkMessageBox in %s seconds'%x

x = timeit.timeit('import os')
print 'imported os in %s seconds'%x

命令行的输出是:

C:\Users\***\AppData\Local\Continuum\Anaconda>C:\Users\***\Desktop\tester.py
imported numpy in 5.22607264113 seconds
imported pandas in 13.7990192174 seconds
imported Tkinter in 3.95690550577 seconds
imported tkFileDialog in 3.62803133249 seconds
imported tkMessageBox in 1.50766849631 seconds
imported os in 1.87009742139 seconds

如何诊断正在发生的事情和/或加快导入速度?我不确定从哪里开始....也许重新安装 Anaconda?非常感谢任何见解或想法。

【问题讨论】:

  • 我猜问题不是来自 python,而是你的电脑?查看进程和内存,看看是否没有任何东西在消耗您的所有资源。
  • 感谢您的回复。通过资源监视器检查时,大约 30% 的内存(2.5gb/8gb)正在使用......这足以导致这种延迟吗?
  • sys.path 中有什么?我想有一个缓慢的网络路径(或其中几个)可能会导致导入速度变慢。
  • 我有 Anaconda 包的默认设置以及更多:C:\Users***\AppData\Local\Continuum\Anaconda\lib\site-packages\requests_kerberos-0.7.0-py2 .7.egg C:\Users***\AppData\Local\Continuum\Anaconda\python27.zip C:\Users***\AppData\Local\Continuum\Anaconda\DLLs C:\Users***\AppData\ Local\Continuum\Anaconda\lib C:\Users***\AppData\Local\Continuum\Anaconda\lib\plat-win C:\Users***\AppData\Local\Continuum\Anaconda\lib\lib-tk C :\Users***\AppData\Local\Continuum\Anaconda C:\Users***\AppData\Local\Continuum\Anaconda\lib\site-packages(继续下一条评论)
  • C:\Users***\AppData\Local\Continuum\Anaconda\lib\site-packages\PIL C:\Users***\AppData\Local\Continuum\Anaconda\lib\site -packages\Sphinx-1.2.3-py2.7.egg C:\Users***\AppData\Local\Continuum\Anaconda\lib\site-packages\cryptography-0.8-py2.7-win-amd64.egg C :\Users***\AppData\Local\Continuum\Anaconda\lib\site-packages\win32 C:\Users***\AppData\Local\Continuum\Anaconda\lib\site-packages\win32\lib C:\用户***\AppData\Local\Continuum\Anaconda\lib\site-packages\Pythonwin C:\Users***\AppData\Local\Continuum\Anaconda\lib\site-packages\setuptools-18.8.1-py2。 7.鸡蛋

标签: python python-2.7 anaconda python-import


【解决方案1】:

您对 timeit 的使用不正确,您应该传递 number = 1 以便 import 语句只执行一次。 timeit 默认传递“number”为 1000000。难怪导入一百万次模块需要几秒钟。

话虽如此,python 导入通常很慢,您会在 stackoverflow 和其他在线资源上找到一些关于如何加快导入(延迟导入、预编译模块等)的好建议。

【讨论】:

  • ...但似乎不在 stackoverflow 的 this 页面上。同意 number=1 应该被使用,但实际上在最初的 import 之后,随后的 999999 次迭代将只是闪电般快速地查找到 sys.modules
猜你喜欢
  • 2016-03-04
  • 2017-04-17
  • 2016-02-14
  • 2018-11-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多