我正在使用python在redis中以5分钟的时间间隔增加计数器,并且执行代码的速度非常重要。我将有一个排序集,看起来像这样:如何在python中以5分钟的时间间隔存储时间戳
1:30 incr 1:35 incr ...
其中incr是5分钟间隔之间的命中数。
可以说我在下午1点32分,我想把所有的点击在1点半到1点35分之间放在那个桶里。
天真地我可以通过一个列表循环查看30分钟到35分钟之间的时间,并放置在1点30分的桶中。有没有更pythonic的方法来做到这一点?
我正在使用python在redis中以5分钟的时间间隔增加计数器,并且执行代码的速度非常重要。我将有一个排序集,看起来像这样:如何在python中以5分钟的时间间隔存储时间戳
1:30 incr 1:35 incr ...
其中incr是5分钟间隔之间的命中数。
可以说我在下午1点32分,我想把所有的点击在1点半到1点35分之间放在那个桶里。
天真地我可以通过一个列表循环查看30分钟到35分钟之间的时间,并放置在1点30分的桶中。有没有更pythonic的方法来做到这一点?
from redis import Redis
r = Redis(db=1)
r.flushdb()
def store(t):
h, m = map(int, t.split(':'))
m = m - m % 5
r.zincrby('tc', '%d:%02d' % (h, m), 1)
store('1:02')
store('1:30')
store('1:32')
store('1:35')
print r.zrange('tc', 0, -1, withscores=True)
输出:
[('1:00', 1.0), ('1:35', 1.0), ('1:30', 2.0)]
太棒了:)谢谢 – Tampa 2012-03-27 04:58:24
不客气) – 2012-03-27 05:07:03
看看时间在* *只是一分钟表示。如果加上整数除法和/或模数,这会导致什么? – 2012-03-27 01:50:28
我不这么认为,通常你会遍历列表并使用'bucket.setdefault(minute,[])填充列表字典。append(hit)' – 2012-03-27 01:53:23