Skip to content

Latest commit

 

History

History
49 lines (32 loc) · 2.16 KB

homework.md

File metadata and controls

49 lines (32 loc) · 2.16 KB

Домашнее задание #08 (память, профилирование)

1. Сравнение использования weakref и слотов

Нужно придумать свои типы с несколькими атрибутами:

  • класс с обычными атрибутами
  • класс со слотами
  • класс с атрибутами weakref

Для каждого класса создается большое число экземпляров и замеряется (сравнивается):

  • время создания пачки экземпляров
  • время чтения/изменения атрибутов

Результаты замеров оформляются скриншотами c описанием и выводом.

2. Профилирование

Провести профилирование вызовов и памяти для кода из пункта 1.

Результаты оформляются скриншотами c описанием.

3. Декоратор для профилирования

Применение декоратора к функции должно выполнять прoфилирование (cProfile) всех вызовов данной функции. Вызов метода .print_stat() должен выводить единую таблицу со статистикой профилирования суммарно по всем вызовам функции.

def profile_deco(...):
    ...


@profile_deco
def add(a, b):
    return a + b


@profile_deco
def sub(a, b):
    return a - b


add(1, 2)
add(4, 5)
sub(4, 5)


add.print_stat()  # выводится результат профилирования суммарно по всем вызовам функции add (всего два вызова)
sub.print_stat()  # выводится результат профилирования суммарно по всем вызовам функции sub (всего один вызов)

4. Перед отправкой на проверку код должен быть прогнан через flake8 и pylint, по желанию еще black