1 需求:

整理个IP列表,需要将IP去重下,统计一共多少来源

本来想直接shell命令解决,简单的 sort 管道 uniq  然后wc下

无奈文件太大,条数多,处理效率不堪

文件大概5G,几亿条数据吧

image.png


2 PLAN A  未遂

 shell处理:

 #time sort ip | uniq | wc -l

然后没啥反应了。。。。 其实是在处理中,最后被我ctrl c了

image.png


3 PLAN B

没办法写个简单的python,用列表的排重特性(需要注意文件读取的方法,不要将文件一次全部读取到内存。。。):

#! /usr/bin/env python 
d={}
with open('ip', 'rb') as f:
    for line in f:
        d[line] = 'ip'
print  len(d)
time python read.py

然后就很快结束了:

image.png


4 结束

简单看下资源消耗情况:


image.png



优势还是挺明显的,以小见大吧,希望python可以帮助大家解决工作中的实际问题,不论大小。