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 之后,问题又来了。和以前一样慢启动。禁用额外的软件并没有解决问题,因此我们正在尝试在其他机器上进行测试以追踪问题。
- 默认加载的模块可能是造成启动差异的一个因素。您可以使用
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/
- 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 被 运行 作为一个提升的进程,速度会慢一个数量级。将其作为正常过程切换到 运行 对我来说产生了巨大的变化。
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 之后,问题又来了。和以前一样慢启动。禁用额外的软件并没有解决问题,因此我们正在尝试在其他机器上进行测试以追踪问题。
- 默认加载的模块可能是造成启动差异的一个因素。您可以使用
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/
- 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 被 运行 作为一个提升的进程,速度会慢一个数量级。将其作为正常过程切换到 运行 对我来说产生了巨大的变化。