Задать вопрос
@giorgio85

Как вывести список из декоратора функции в Python?

В задаче требовалось рассчитать время выполнения встроенных функций sum и min за указанное количество итераций. В результате вывести список ['Название функции', 'Количество проведенных итераций', 'Затраченное время']. Вопрос: как объединить все три элемента в один список? Заранее благодарен за помощь.

import time
def timer(f):
    def subfunc(*args, **kwargs):
        mylist = []
        t = time.time()
        res = f(*args, **kwargs)
        res_3 = (time.time() - t)

        mylist.append(res_3)
        print(mylist)
        print("Время выполнения функции: ", res_3)
        return res

    return subfunc

@timer
def myfunc(expression, i=1000, sleep=2, args=[]):
    time.sleep(sleep)
    mylist = []
    res_1 = expression(j for j in range(1, 10001))
    res_2 = res_1 * i
    mylist.append(expression.__name__)
    mylist.append(i)
    print(mylist)
    print(res_2)
    return res_2

myfunc(sum, 20000)
myfunc(min, 20000)
  • Вопрос задан
  • 121 просмотр
Подписаться 1 Простой 2 комментария
Пригласить эксперта
Ответы на вопрос 2
@brightcow
import time


def timer(f):
    def subfunc(*args, **kwargs):

        t = time.time()
        res = f(*args, **kwargs)
        res_3 = (time.time() - t)
        
        mylist = [args[0].__name__, args[1], res_3]
        print(mylist)
        return res

    return subfunc

@timer
def myfunc(expression, i=1000, sleep=2, args=[]):
    time.sleep(sleep)
    
    res_1 = expression(j for j in range(1, 10001))
    res_2 = res_1 * i

    return res_2

myfunc(sum, 20000)
myfunc(min, 20000)
Ответ написан
Комментировать
Vindicar
@Vindicar
RTFM!
Просто сделай список из кортежей.
calls = []
func = 'sum'
iterations = 9001
time = 42.0
calls.append( (func, iterations, time) )
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы