Skip to content

Commit 3b41a50

Browse files
add lesson #08 slides, hw
1 parent 7bc9666 commit 3b41a50

File tree

2 files changed

+51
-0
lines changed

2 files changed

+51
-0
lines changed

lesson-08/homework.md

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
# Домашнее задание #08 (память, профилирование)
2+
3+
### 1. Сравнение использования weakref и слотов
4+
Нужно придумать свои типы с несколькими атрибутами:
5+
- класс с обычными атрибутами
6+
- класс со слотами
7+
- класс с атрибутами weakref
8+
9+
Для каждого класса создается большое число экземпляров и замеряется (сравнивается):
10+
- время создания пачки экземпляров;
11+
- время чтения/изменения атрибутов пачки экземпляров.
12+
13+
Результаты замеров оформляются скриншотами c описанием и выводом.
14+
15+
### 2. Профилирование
16+
Провести профилирование вызовов и памяти для кода из пункта 1.
17+
18+
Результаты оформляются скриншотами c описанием и выводом.
19+
20+
### 3. Декоратор для профилирования
21+
Применение декоратора к функции должно выполнять прoфилирование (cProfile) всех вызовов данной функции.
22+
Вызов метода `.print_stat()` должен выводить единую таблицу со статистикой профилирования суммарно по всем вызовам функции.
23+
24+
25+
```py
26+
def profile_deco(...):
27+
...
28+
29+
30+
@profile_deco
31+
def add(a, b):
32+
return a + b
33+
34+
35+
@profile_deco
36+
def sub(a, b):
37+
return a - b
38+
39+
40+
add(1, 2)
41+
add(4, 5)
42+
sub(4, 5)
43+
44+
45+
add.print_stat() # выводится результат профилирования суммарно по всем вызовам функции add (всего два вызова)
46+
sub.print_stat() # выводится результат профилирования суммарно по всем вызовам функции sub (всего один вызов)
47+
```
48+
49+
### 4. Зеленый пайплайн в репе
50+
Обязательно: flake8, pylint.
51+
Опционально можно добавить другие инструменты, например, mypy и black.

lesson-08/lesson-08.pdf

1.29 MB
Binary file not shown.

0 commit comments

Comments
 (0)