• 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:UsersAdministratorDesktopweixin_keyword.txt"
    
        start_time = int(time.time())
        data_list = []
        with open(file) as f:
            for line in f.readlines():
                line = str(line).replace('	','')
                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,带宽中的运行流程,

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

  • 相关阅读:
    通用测试用例(转载)
    微信小程序开发-使用阿里巴巴矢量图标
    flask框架启服务+json格式入参+postman获取上个接口的token作为下个接口的入参+关联接口【多测师_王sir】
    this.$set的正确使用
    vue中异步函数async和await的用法
    Tornado 异步协程coroutine原理
    nvm安装配置
    python基础
    数组for循环方法总结
    react 之props传值
  • 原文地址:https://www.cnblogs.com/xuchunlin/p/10523273.html
Copyright © 2020-2023  润新知