2012-03-27 112 views
3

我正在使用python在redis中以5分钟的时间间隔增加计数器,并且执行代码的速度非常重要。我将有一个排序集,看起来像这样:如何在python中以5分钟的时间间隔存储时间戳

1:30 incr 1:35 incr ... 

其中incr是5分钟间隔之间的命中数。

可以说我在下午1点32分,我想把所有的点击在1点半到1点35分之间放在那个桶里。

天真地我可以通过一个列表循环查看30分钟到35分钟之间的时间,并放置在1点30分的桶中。有没有更pythonic的方法来做到这一点?

+1

看看时间在* *只是一分钟表示。如果加上整数除法和/或模数,这会导致什么? – 2012-03-27 01:50:28

+0

我不这么认为,通常你会遍历列表并使用'bucket.setdefault(minute,[])填充列表字典。append(hit)' – 2012-03-27 01:53:23

回答

4
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)] 
+0

太棒了:)谢谢 – Tampa 2012-03-27 04:58:24

+0

不客气) – 2012-03-27 05:07:03

相关问题