300万数据去重问题
问题:有一个300w行的文件,需要给他去重,有什么好的方法,前提是速度要快。
我的实现方式是:
1 .文件读取到内存中
2.在内存中去重
3.插入到MySQL中去。
300万行数据,实现去重只需要80秒
想提高插入速度可以批量插入和 并发 插入数据。
直接上代码:
# coding:utf-8 from common.contest import * import sys reload(sys) sys.setdefaultencoding('utf-8') def file_insert_db(): file = "C:\Users\Administrator\Desktop\weixin_keyword.txt" start_time = int(time.time()) data_list = [] with open(file) as f: for line in f.readlines(): line = str(line).replace('\t','') line_list = line.split('"') weixin_code = "" source = "" try: weixin_code = line_list[-4] source = line_list[-2] except: print "xxxxxxxx" print line print line_list data_dict = { "weixin_code":weixin_code, "source":source, } data_list.append(str(data_dict)) print int(time.time()) - start_time result = (list(set(data_list))) for ii in result: ii = eval(ii) source = ii['source'] hashcode = md5(source) dbName = "keyword_weixin_base_acount" data_dict = { "hashcode": hashcode, "weixin_code": ii['weixin_code'], "source":source, "name": source, } insert_data(dbName, data_dict) print int(time.time())-start_time file_insert_db()
注意事项:
程序在内存中的处理速度是非常的快的,但是写硬盘的速度是很慢的,所以写代码的过程中,一定要明白程序在内存,硬盘,CPU,带宽中的运行流程,
尽最大的努力优化自己的代码。
如果觉得对您有帮助,麻烦您点一下推荐,谢谢!
好记忆不如烂笔头
好记忆不如烂笔头
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术