0

我写了一个 django 命令,想看看它的时间,所以在里面django shell_plus我这样做:

import timeit
from django.core.management import call_command

timeit.timeit("""call_command('prova')""", number=3 )

该命令应运行 3 次并输出其运行时间。

如果直接运行'call_command'它可以工作,如果在timeit内调用它会抛出这个错误:

/usr/lib/python3.5/timeit.py in timeit(self, number)
    176         gc.disable()
    177         try:
--> 178             timing = self.inner(it, self.timer)
    179         finally:
    180             if gcold:

/usr/lib/python3.5/timeit.py in inner(_it, _timer)

NameError: name 'call_command' is not defined
4

1 回答 1

2

timeit始终在新的执行上下文中运行,它无权访问您之前导入的任何内容。您需要使用设置代码传递一个单独的参数:

timeit.timeit("call_command('prova')", number=3, setup='from django.core.management import call_command' )

请参阅timeit 文档

于 2018-06-20T10:31:14.430 回答