Python 在 Windows 上启动非常慢 7

Python is very slow to start on Windows 7

Python 在我的 Windows 7 机器上加载的时间比 Ubuntu 14.04 运行 在 VM 上的加载时间长 17 倍(在 Windows 内硬件)。 Anaconda3 发行版用于 Windows 和 Ubuntu 默认 python3.4.

来自 Bash 提示(Git bash on Windows):

$ time python3 -c "pass"

returns 在 Windows 上用了 0.614 秒,在 Linux

上用了 0.036 秒

加载包时情况变得更糟:

$ time python3 -c "import matplotlib"

returns 在 Windows 上用了 6.01 秒,在 Linux

上用了 0.189 秒

Spyder 在 Windows 上加载时间高达 51 秒,在 Linux 上加载时间高达 1.5 秒。

我没有运气确定为什么我有这个性能问题。有人知道我接下来应该尝试什么吗?

编辑:

Why is python so much slower on windows? 已被建议作为可能的重复项,但我的性能差异要大得多,并且不能简单地通过不同的库依赖项和编译器来解释。在我看来,这似乎与文件系统差异有关。

我曾怀疑防病毒访问扫描,但为了以防万一禁用了防病毒软件。

>>> sys.path

['', 'c:\Anaconda3\python34.zip', 'c:\Anaconda3\DLLs', 'c:\Anaconda3\lib', 'c:\Anaconda3', 'c:\Anaconda3\lib\site-packages', 'c:\Anaconda3\lib\site-packages\Sphinx-1.2.3-py3.4.egg', 'c:\Anaconda3\lib\site-packages\cryptography-0.8-py3.4-win-amd64.egg', 'c:\Anaconda3\lib\site-packages\nose-1.3.4-py3.4.egg', 'c:\Anaconda3\lib\site-packages\win32', 'c:\Anaconda3\lib\site-packages\win32\lib', 'c:\Anaconda3\lib\site-packages\Pythonwin', 'c:\Anaconda3\lib\site-packages\setuptools-14.3-py3.4.egg']

更新:

在同一台 PC 上全新安装 Windows 8.1 Pro 解决了这个问题。重新安装所有应用程序后,Anaconda3 Python 性能是我见过的最好的。不幸的是,这个问题的根本原因仍然未知。

更正:

在我的 IT 部门安装了 Sophos SafeGuard 加密软件和 MS Endpoint Protection 之后,问题又来了。和以前一样慢启动。禁用额外的软件并没有解决问题,因此我们正在尝试在其他机器上进行测试以追踪问题。

  1. 默认加载的模块可能是造成启动差异的一个因素。您可以使用 sys.modules 来比较您的两个环境。

python -c "import sys;print(len(sys.modules))"

对我来说答案是

$ time py -2 -c "pass"

real    0m0.054s
user    0m0.000s
sys     0m0.000s

$ py -2 -c "import sys;print(len(sys.modules))"
44

$ time py -3 -c "pass"

real    0m0.063s
user    0m0.000s
sys     0m0.000s

$ py -3 -c "import sys;print(len(sys.modules))"
54

并且您可以使用虚拟环境来操作默认加载的模块。 https://virtualenv.pypa.io/en/latest/

  1. Git bash 对于 windows 似乎对我来说 python 不正常。启动解释器时,我没有看到版本横幅。我会将开始时间与 cmd 提示进行比较。或者甚至 python 启动 python。例如。

-

import subprocess
import time
start = time.time()
subprocess.check_call(["python", '-c ', 'pass'])
print time.time() - start

问题已通过卸载 Sophos SafeGuard 解决。这并不是一个真正令人满意的解决方案,因为我的公司在我每天访问的目录上使用这个文件系统加密软件。除了 Python(显然还有 Ruby)之外,我似乎没有任何其他性能问题。

注意:Sophos SafeGuard 不是 防病毒软件。它是一个企业文件系统加密系统。奇怪的是,本地文件系统明确没有启用加密,例如安装了 Python 的地方。

可能与您的情况无关,但我发现 运行ning python 在 Windows 中使用 Sophos Safeguard 和 Mcafee Enteprise Antivirus python 启动时间是如果 python 被 运行 作为一个提升的进程,速度会慢一个数量级。将其作为正常过程切换到 运行 对我来说产生了巨大的变化。