Я использую модуль python dateutil для приложения календаря, которое поддерживает повторяющиеся события. Мне очень нравится возможность анализировать правила, используя функцию rrulestr(). Кроме того, использование rrule.between() для получения дат в заданном интервале очень быстро.Python dateutil.rrule невероятно медленный
Однако, как только я попытаюсь выполнить любые другие операции (то есть: список фрагментов, before(), after(), ...), все начинает сканирование. Кажется, что dateutil пытается рассчитать каждую дату, даже если все, что я хочу, - это получить последнюю дату с rrule.before (datetime.max).
Есть ли способ избежать этих ненужных вычислений?
Я храню события в базе данных и хотел бы запросить события между определенными датами (то есть: начало и конец месяца) , Если я могу сохранить первую и последнюю даты, я мог бы исключить все события, которые не «перекрываются» с заданным интервалом времени, уменьшая количество событий, для которых я должен вызвать rrule.between(). – pklall
С другой стороны, я думаю, что добавление щедрого максимального «подсчета» к каждому рублю устранит проблему. – pklall
Я обычно исправляю это с помощью щедрой максимальной даты, например, 20 лет в будущем. 8000 лет кажется излишним. Также вы можете иметь специальную обработку для дат, у которых нет даты окончания или окончания, так как вы знаете, что по определению они никогда не кончатся, поэтому они * будут * перекрываться. :) –