擅长:python、mysql、java
<p>让我们通过基准测试找出答案。从脚本开始:</p>
<pre><code>#!/usr/bin/python
for i in xrange(100000):
print "def foo%d(): pass\n" % i
</code></pre>
<p>生成一个大型Python程序。我们将其保存到<code>foo.py</code>。在</p>
<p>程序<code>import.py</code>只执行<code>import foo</code>(四次重复):</p>
^{pr2}$
<p>第二次(以及后续的)执行速度更快,因为Python在第一次导入<code>foo</code>之后对一个文件<code>foo.pyc</code>进行折痕处理,该文件包含解析<code>foo.py</code>的结果。这将加速模块的所有后续导入。在</p>
<p>程序<code>fromimport.py</code>执行<code>from foo import foo1</code>(四次重复):</p>
<pre><code># time python fromimport.py
7.81s user 0.44s system 99% cpu 8.253 total
1.48s user 0.15s system 100% cpu 1.626 total
1.52s user 0.11s system 99% cpu 1.631 total
1.49s user 0.14s system 100% cpu 1.630 total
</code></pre>
<p>这些时间与前一个程序非常相似(同样,第一次比较慢,因为Python需要解析<code>foo.py</code>),它确认了其他答案的陈述,即在常见场景中,<code>import foo</code>和{<cd8>}之间没有显著的性能差异。在</p>
<p>正如其他人所指出的,这是因为Python需要解析/运行整个文件,即使调用者实际上只使用了其中的一小部分。在</p>