Python dateutil.rrule 极其慢
我正在使用Python的dateutil模块来开发一个日历应用,这个应用支持重复事件。我特别喜欢用rrulestr()函数来解析ical格式的规则。此外,使用rrule.between()来获取某个时间段内的日期也非常快。
不过,一旦我尝试进行其他操作,比如列表切片、before()、after()等,速度就变得很慢。看起来dateutil会计算出每一个日期,即使我只是想用rrule.before(datetime.max)来获取最后一个日期。
有没有办法避免这些不必要的计算呢?
1 个回答
4
我猜可能不行。在datetime.max之前的最后一个日期意味着你得计算所有的重复事件,直到datetime.max,这样的话要计算的重复事件数量会非常多。对于一些简单的重复事件,可能可以添加一些快捷方式。比如说,如果是每年在同一天,你其实不需要计算中间的那些重复事件。但是如果是每三次什么的,那就必须计算了,还有如果有最大重复次数等等。不过我想dateutil可能没有这些快捷方式。要可靠地实现这些功能可能会相当复杂。
我可以问一下你为什么需要找到在datetime.max之前的最后一次重复事件吗?毕竟,这几乎是八千年后的事了… :-)