Я измеряю производительность различных методов сортировки, используя Python встроенную библиотеку timeit . Я хотел бы передать функцию и целое число в качестве аргументов для оператора, проверяемого в timeit () . Я попробовал следующее:
def sort_1(l):
...
return l_sorted
def test(f: Callable, l_len: int):
l = np.random.rand(low=-1000, high=1000, size=l_len)
f(l)
timeit.timeit(stmt=test(sort_1, l_len=10), number=1000)
... с ошибкой ValueError, говорящей, что stmt не является ни строкой, ни вызываемой. Ошибка не возникает, когда я называю это так:
timeit.timeit(stmt=test, number=1000)
... но тогда я не могу передать аргумент test () . Каково общее решение, если кто-то хочет передать аргументы функции, заданной в качестве аргумента? (скажем, когда метод уже реализован и нет способа передать аргументы в отдельный аргумент)
Приветствия
Редактировать:
@ jonrsharpe, спасибо! Решение выглядит так:
timeit.timeit(stmt='test(f=sort_1, l_len=10)', number=100, globals=globals())