擅长:python、mysql、java
<p>我问了这个问题的一个变体,也得到了一个没有解决我问题的答案。我相信我们都没能用Python来表达这个问题。在</p>
<p>我不知道这是否是一个黑客,解决办法,或它应该如何做,但它确实有效:</p>
<pre><code>>>> import timeit
>>> b = range(1, 1001)
>>> t = timeit.Timer('sorted(b)', setup='from __main__ import b')
>>> t.repeat(3, 100)
[0.0024309158325195312, 0.0024671554565429688, 0.0024020671844482422]
# was it really running 'sorted(b)'? let's compare'
>>> t = timeit.Timer('pass', setup='from __main__ import b')
>>> t.repeat(3, 100)
[3.0994415283203125e-06, 2.1457672119140625e-06, 1.9073486328125e-06]
# teeny times for 'pass', 'sorted(b)' took more time
</code></pre>
<p>我读过了timeit.py,它的工作方式是构造一个语句,然后使用与主命名空间(似乎)没有连接的新命名空间对其调用<a href="http://docs.python.org/library/functions.html#eval" rel="nofollow noreferrer">eval()</a>。请注意,由于<code>sorted</code>是一个内置的,因此<code>timeit.repeat()</code>中的求值表达式可以访问该名称;如果它是您的<code>def</code>,则必须<code>from __main__ import b, myfunc</code>。在</p>
<p>我希望有比这更合适的方法来达到目的。在</p>