2015-11-26 3 views
2

Я должен найти время, необходимое для выполнения запроса в Джанго проекта т.е. 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, почему бы не реализовать свою собственную функцию синхронизации?

>>> 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

Да, я сделал метод начала и окончания. –