1. Главная
  2. Библиотека
  3. Программирование
  4. На факультете переносных наук одного университета очень...
Разбор задачи

На факультете переносных наук одного университета очень забеспокоились, а пользуются ли студентом функционалом их системы МДНЛ (Молюсь дабы не ломалось), и хотят понять три вещи: Какие студенты пользуются той или иной функцией Как часто студенты ими

  • Предмет: Программирование
  • Автор: Кэмп
  • #Основы алгоритмизации и программирования
  • #Разработка и тестирование программного обеспечения
На факультете переносных наук одного университета очень забеспокоились, а пользуются ли студентом функционалом их системы МДНЛ (Молюсь дабы не ломалось), и хотят понять три вещи: Какие студенты пользуются той или иной функцией Как часто студенты ими

Условие:

На факультете переносных наук одного университета очень забеспокоились, а пользуются ли студентом функционалом их системы МДНЛ (Молюсь дабы не ломалось), и хотят понять три вещи:

Какие студенты пользуются той или иной функцией
Как часто студенты ими пользуются
Как быстро сами функции отрабатывают
Для этого они пригласили вас в качестве эксперта по оптимизации ресурсов. Напишите класс Analiser, который будет анализировать кол-во вызовов тех или иных функций, а также среднее время выполнения этих функций.

Так как никакая анонимность не гарантирована, для вызова любой функции в качестве именнованого аргумента student всегда присылается почта, с помощью которой можно собирать всю необходимую статистику.

Класс Analiser представляет из себя класс-декоратор, который хранит следующие данные:
\nstudents - множество студентов, которые пользовались функционалом\ntimings - словарь {название функции : суммарное время выполнения функции}\nusages - словарь {название функции : число использований}\nunique_usages - словарь {название функции : множество уникальных пользователей}
Обратите внимание, что при добавлении декоратора наши исходные функции должны сохранять свои метаданные (название, описание, модуль)

Также реализуйте внутри класса Analiser следующие функции:
\nget_avg_timing(self, fn) - возвращает среднее время выполнения функции\nget_perc_usages(self, fn) - возвращает процент студентов, которые использовали функцию\nget_all_students(self) - возвращает число студентов, которые пользовались хотя бы один раз системой\nworkload(self) - возвращает общее число вызовов функций\nget_all_timing(self) - возвращает общее время обработки всех функций

Решение:

Ниже привожу пошаговое решение задачи на языке Python. Идея решения состоит в следующем:

  1. Мы создаём класс Analiser, который используется как декоратор для функций. При инициализации экземпляра декоратора (то есть при объявлении функции с этим декоратором) мы сохраняем ссылку на исходную функцию и её имя. Также нам нужно сохранить служебные данные – множество всех студентов, словарь суммарных времён работы по каждой функции, словарь количества вызовов для каждой функции и словарь уникальных за каждую функцию пользователей. Поскольку статистика должна собираться для всех задекорированных фун...

Внутри — полный разбор, аргументация, алгоритм решения, частые ошибки и как отвечать на каверзные вопросы препода, если спросит

Попробуй решить по шагам

Попробуй один шаг и продолжи в режиме обучения или посмотри готовое решение

Какой модуль Python используется в классе Analiser для сохранения метаданных исходной функции при её декорировании?

Что нужно знать по теме:

Что нужно знать по теме

Алгоритм решения

Топ 3 ошибок

Что спросит препод

Выбери предмет