目 录CONTENT

文章目录

Python处理大文件遇到的一些问题记录(list.index方法)-20221108

cplinux98
2022-11-08 / 0 评论 / 0 点赞 / 17 阅读 / 299 字 / 正在检测是否收录...

使用的原因

有一个很大的列表,要用里面的元素组成sql插入到ck数据库(json格式插入),发现一次性插入会失败(20G的insert sql),所以想到了对索引取模,把sql切割成10000条数据插入一次。

最开始就想到取元素的索引,也就是使用list.index(元素)来取,后来根据日志发现,插入的速度越来越慢,后面仔细想了一下:

问题所在

list.index()虽然是O(1)时间复杂度,但在拥有超大(9000w)元素的列表中是不适用的,因为越往后,越相当于重读整个列表了,

最后使用计数器来实现对列表中元素索引的判断

以下是相关的代码片段

insert_number = 0
number = 10000

for i in all_list:
    if (insert_number % number) == 0:
        # 是 number 的倍数,就累计之后插入到ck中
        insert_str += json.dumps(i, ensure_ascii=False)
        insert_number += 1  # 统计插入条数
        insert_str = insert_init
    else:
        # 不是 number 的倍数,就往插入语句中累计
        insert_str += json.dumps(i, ensure_ascii=False)
        insert_number += 1


0

评论区