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,带宽中的运行流程,

  尽最大的努力优化自己的代码。

 

转载于:https://www.cnblogs.com/xuchunlin/p/10523273.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值