Pripisnov#164
Conversation
IlyaOrlov
left a comment
There was a problem hiding this comment.
Хорошо. Но есть некоторые замечания.
| def solve_task(self): | ||
| thinking_time = randint(3, 6) # Генерация случайного времени от 3 до 6 секунд | ||
| time.sleep(thinking_time) # Задержка выполнения программы на указанное количество секунд | ||
| print("I'm ready now!") |
There was a problem hiding this comment.
Нет.. даже после того, как Pupil подумает, он всё равно должен сказать "Я еще не готов".
Для этого стоит вызвать в этой строке родительский метод: super().solve_task()
| atm.check_balance() | ||
| atm.withdraw_cash(3000) | ||
| atm.deposit_cash(2000) | ||
| if isinstance(atm, OnlineATM): |
There was a problem hiding this comment.
Чтоб не писать здесь if, стоит воспользоваться возможностями полиморфизма;)
Надо завести make_payment в классе ATM, только в этом случае метод будет вырожденным (просто pass вместо тела метода).
| @@ -0,0 +1,24 @@ | |||
| class ParagraphIterator: | |||
| def __init__(self, text, paragraph_symbol): | |||
| self.paragraphs = text.split(paragraph_symbol) # Разделение текста на параграфы | |||
There was a problem hiding this comment.
Так теряется весь смысл итератора. Мало нам исходного текста в памяти, так тут ещё и целый список создаётся. Надо в __next__ идти прямо по исходному тексту.
|
121 файл!!! |
IlyaOrlov
left a comment
There was a problem hiding this comment.
Есть существенные замечания!
И... 124 файла!!!
| processes.append(process) | ||
| process.start() | ||
| # process.join() - НЕ вызываем join здесь | ||
| for process in processes: |
There was a problem hiding this comment.
То что мы вызываем join() в вложенном цикле (фактически, для только что созданного процесса), сводит на нет весь параллелизм (проблема та же, что Вы описали в стр.35).
|
|
||
| import timeit | ||
|
|
||
| # Замер времени исполнения функции find_primes для каждого диапазона |
There was a problem hiding this comment.
Стоило посчитать суммарное время выполнения расчетов для всех диапазонов и сравнить с аналогичным временем для потоков и процессов.
| import time | ||
|
|
||
| # Запуск три раза последовательно | ||
| for i in range(3): |
There was a problem hiding this comment.
Этот код (в глобальной области видимости) будет выполняться во всех дочерних процессах.
| threads = [] | ||
|
|
||
| for args in args_list: | ||
| thread = threading.Thread(target=results.append, args=(function(*args),)) |
There was a problem hiding this comment.
Почему здесь выбраны именно потоки? Ведь из-за GIL в Python потоки не позволяют обеспечить параллельные вычисления!
…ay23 into Pripisnov # Conflicts: # Practice/Stupina/homework_8/task_2.py # Useful/for_lec14/ctxlib_example1.py # Useful/for_lec14/listdir_example.py
|
Стало, конечно, лучше... Но 54 файла тоже многовато. В PyCharm через меню Git->Branches->Remote main->Show diff with working tree можно сравнить свой бранч с main и подтянуть в свой бранч те, файлы и папки, которые не должны отличаться от main. |
IlyaOrlov
left a comment
There was a problem hiding this comment.
Добавил замечания по работе с БД
| def select(self, query, params=None): | ||
| self.cursor.execute(query, params or ()) | ||
| rows = self.cursor.fetchall() | ||
| columns = [desc[0] for desc in self.cursor.description] |
There was a problem hiding this comment.
Чтоб не заморачиваться с колонками (стр.30-31), достаточно перед исполнением запроса прописать self.cursor.row_factory = sqlite3.Row
| results = [dict(zip(columns, row)) for row in rows] | ||
| return json.dumps(results, indent=4) | ||
|
|
||
| # Пример использования: |
There was a problem hiding this comment.
Код в глобальной области видимости стоит помещать под if __name__ == "__main__":
No description provided.