Я использую поляры для расчета показателей академической эффективности для учащихся в разных прошлых и текущих терминах. Моя текущая реализация включает в себя переход через каждый термин, что приводит к чрезмерному использованию памяти (до 32 ГБ оперативной памяти) и производительности, которая не значительно превосходит панд. Я ищу советы по оптимизации кода для повышения эффективности памяти и скорости обработки.
Код: Выделить всё
PERIOD
Код: Выделить всё
COURSE_STATUS
[*] studive_performance: фиксирует показатели эффективности для студентов в учебный период (например, приостановка, академическое испытательное срок).
[*] enrolled_students . /> Каждый академический период (
Код: Выделить всё
PERIOD
Цель:
Рассчитайте синтетические показатели производительности, которые отражают исторические данные во время, как имитируют, как имитируют, как они смоделируют, что смелька будет сниматься в том, как наметрики будут выглядеть, что они смоделируют, что они смоделируют, что они смоделируют, что они смоделируют, что они смоделируют, что они смоделируют, что они смоделируют, что они смоделируют, что они смоделируют, что они смоделируют, что они смоделируют, что они смоделируют, что они смоделируют, что они смоделируют, что они смоделируют. Периоды. /> < /ul>
Идентифицированные проблемы: < /h3>
Высокое использование памяти (32 ГБ оперативной памяти полностью потребляется). < /li>
Производительность, аналогичная или хуже, чем Pandas, несмотря на типичную эффективность Polars. />
Оптимизируйте потребление памяти значительно. /> Функция Расчет метрик за период: < /strong> < /p>
Код: Выделить всё
def calculate_performance_criteria(grades_history: pl.LazyFrame,
enrolled_students: pl.LazyFrame,
student_performance: pl.LazyFrame,
period: int,
index_period: int,
undergrad_periods: list[int]) -> pl.LazyFrame:
period_min = min(undergrad_periods[max(0, index_period - 3):index_period + 1])
accumulated_risk_summary = (
student_performance
.filter(pl.col("PERIOD") = period_min) &
(pl.col("PERIOD")
Конкретные запросы: < /h3>
Как я могу рефакторировать эти расчеты, чтобы уменьшить след за памятью? Оптимизации здесь по -разному можно использовать?>
Подробнее здесь: [url]https://stackoverflow.com/questions/79581760/how-can-i-prevent-this-code-in-polars-to-consume-all-the-ram-in-my-computer[/url]