很容易得到dateutil.rrule.rrule
实例的第n次出现:
rule = dateutil.rrule.rrule(...)
occurrence = rule[15]
...但我有一个事件occurrence in rule is True
;我想知道它出现了什么(即上面的例子中出现的索引,在上面的例子中是15)而没有引起性能问题,因为我可能需要在很多事件中这样做。
这是否可能,如果可行,该如何做?
答案 0 :(得分:0)
我不知道一种方法可以让你使用当前的一组函数对值进行测试。
但是,根据您执行计算的频率,您可以考虑执行以下操作:
cache
feature:cache - 如果给定,它必须是一个布尔值,指定启用或 禁用缓存结果。如果您将使用相同的rrule实例 多次,启用缓存将提高性能 相当。
鉴于r
是一大组结果:
>>> r # Your result set
<dateutil.rrule.rrule object at 0x7f616d4182e8>
>>> r[1] # Example of what's inside
datetime.datetime(2015, 1, 1, 0, 0)
>>> import numpy as np # Let's load numpy
>>> a = np.array(list(r)) # We build a numpy array, should be fast
>>> np.argwhere(a == datetime.datetime(2015, 1, 1, 0, 0)) # Catch'em all!
array([[1]])
我不确定np.argwhere()
是否比使用简单循环迭代结果集更快,但这是一种更易读的方法。