情景:计算日志文件中,独立IP的个数,也就是unique visitor。
计算量:每小时大概有70万左右的记录,每天24小时,大概1400-1500万条记录
addrs = set()
for line in f.readlines():
addr = get_addr(line)
addrs.add(addr)
print len(addrs)
set的add方法会在内部判断元素是否已经添加,如果元素已经存在,则忽略掉,否则就添加到set里边去
所以,不需要像list那样在添加到set之前判断。
测试了一下,分析完一个文件才要2-3秒钟,速度是用list的200多倍啊,24个文件用了1分钟就分析完了。
set的缺点在于无法保证元素添加进去的顺序,如果需要保证顺序,还需要list的辅助啦。