2015-11-26 27 views
2

我必須找到運行在Django項目查詢即python manage.py shelltimeit沒有在Python工作manage.py殼

代碼所用的時間:

>>> import timeit 
>>> d = {"a":1, "b":2} 
>>> def a1(): 
...  for i in d: 
...   a = i, d[i] 
... 
>>> a1() 


>>> print "Time 1:", timeit.timeit('a1()', 'from __main__ import a1 as a1') 
Traceback (most recent call last): 
    File "<console>", line 1, in <module> 
    File "/usr/lib64/python2.6/timeit.py", line 227, in timeit 
    return Timer(stmt, setup, timer).timeit(number) 
    File "/usr/lib64/python2.6/timeit.py", line 193, in timeit 
    timing = self.inner(it, self.timer) 
    File "<timeit-src>", line 3, in inner 
ImportError: cannot import name a1 
Time 1: >>> 

這不是在Python的工作管理。 py shell

但是這是工作文件我在py文件中編寫代碼並運行我的命令行。

也有一些是錯誤的from __main__ import a1 as a1

回答

1

我也遇到了同樣的問題,並沒有發現任何真正的解決方案。因爲適合的像在您的示例幾行代碼,直接把它們放在timeit()的setup參數:

>>> setup = 'd={"a":1, "b":2}\ndef a1():\n for i in d:\n  a = i, d[i]\n' 
>>> print "Time 1:", timeit.timeit('a1()', setup) 
Time 1: 0.337239027023 

然而,雖然它並不能幫助解釋爲什麼timeit進口沒有按」 t在django shell中工作,爲什麼不實現你自己的計時功能?

>>> import time 
>>> def time_function(fnc, number=10**6): 
>>>  start = time.time() 
>>>  for i in xrange(number): 
>>>   fnc() 
>>>  return time.time() - start 

>>> print "Time 1:", time_function(a1) 
Time 1: 0.3310558795928955 
+0

是的,我做了一個開始和結束時間的方法。 –

相關問題