Я хочу определить время кода, который зависит от настроек. Код установки выглядит примерно так:
>>> b = range(1, 1001)
И код, который я хочу для времени, выглядит примерно так:
>>> sorted(b)
За исключением того, что мой код использует функцию, отличную от отсортированной. Но это сейчас не важно.
Во всяком случае, я знаю, как рассчитать этот код, пока я передаю строки в timeit:
>>> import timeit
>>> t = timeit.Timer("sorted(b)", "b = range(1, 1001)")
>>> min(t.repeat(3, 100))
Как использовать вызываемый параметр установки и поместить его в пространство имен, к которому может обращаться вызываемый stmt?
Другими словами, как мне сделать то же самое, что и в приведенном выше коде, но с вызываемыми элементами, а не со строками, содержащими вызываемые элементы?
Кстати, здесь большая цель - повторно использовать код из моих модульных тестов для измерения производительности:
import unittest
class TestSorting(unittest.TestCase):
def setUp(self):
self.b = range(1, 1001)
def test_sorted(self):
sorted(self.b)
Я ожидаю немного поработать. Настройка timeit должна создать экземпляр TestSorting, и каким-то образом код stmt должен будет использовать этот конкретный экземпляр.
Как только я пойму, как установка timeit помещает вещи в то же пространство имен, что и stmt timeit, я посмотрю, как преобразовать экземпляры unittest.TestCase во что-то, что может быть направлено прямо в timeit.Timer.
Мэтт