Python dateutil.rrule невероятно медленный
Я использую модуль python dateutil для календарного приложения, которое поддерживает повторяющиеся события. Мне очень нравится возможность разбирать правила с помощью функции rrulestr (). Кроме того, использование rrule.between () для получения дат в заданном интервале очень быстро.
Тем не менее, как только я пытаюсь выполнить какие-либо другие операции (то есть: список фрагментов, до (), после (),...) все начинает сканировать. Кажется, что dateutil пытается вычислить каждую дату, даже если все, что я хочу, это получить последнюю дату с помощью rrule.before (datetime.max).
Есть ли способ избежать этих ненужных расчетов?
1 ответ
Мое предположение, вероятно, нет. Последняя дата до datetime.max означает, что вы должны рассчитать все повторения вплоть до datetime.max, и это будет разумно много повторений. Может быть возможно добавить ярлыки для некоторых простых повторений. Например, если каждый год в один и тот же день, вам не нужно, например, вычислять повторения между ними. Но если у вас есть что-то третье, что вы должны, например, а также, если у вас есть максимальное количество повторений и т. Д. Но я думаю, dateutil не имеет этих ярлыков. Вероятно, было бы довольно сложно реализовать надежно.
Могу ли я спросить, почему вам нужно найти последнее повторение до datetime.max? В конце концов, это почти восемь тысяч лет в будущее...:-)