我在我的 Mac(运行 OS X 10.13.1)上使用安装了Homebrew的Python,最近,我注意到解释器需要很长时间才能启动。
在着手尝试解决这个问题时,我做了一个简单的检查time
:
PIPER-ALPHA:~$ time bpython -c 'pass'
real 0m12.141s
user 0m1.662s
sys 0m10.073s
……这揭示了问题的严重性:12 秒!
然后我使用gnomon
- 一个非常方便的npm
模块,用于逐项列出 CLI 工具的时间 - 将问题归结为有问题的 Python 模块。我使用了这个命令:
PIPER-ALPHA:~$ PYTHONVERBOSE=1 bpython -c 'pass' 2>&1 | tee -a /tmp/bpython-startup-messages | gnomon
…gnomon
输出显示了详细的 Python 解释器输出发出的每一行所花费的时间。它看起来像这样:
......我已经强调了执行需要将近12 秒的输出行——迄今为止最长的,因为其他每一行通常需要几纳秒,或者最多几微秒,也许。
通常,如果我遇到一个不稳定的 Python 扩展,我会自己重新编译它,或者从源代码调整它,以便在必要时正确地使它没有问题。但在这种情况下,我正在处理一个 c-extension 模块,它是一个更大的 Python 标准库模块的一部分,所有这些模块都附带 Homebrew 二进制包(在 Homebrew argot 中称为“瓶子”),其中包含这个版本的 Python。
这是其他人可以证明的问题吗?特别是,在类似情况下运行 Python 时,其他人会遇到这个问题吗?而且,最重要的是,我该如何解决它?我是否需要使用 Homebrew 或不使用 Homebrew 重建整个 Python 安装?