You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何高效写入50万行数据到CSV?Python生成大容量CSV性能优化咨询

优化方案及代码实现

原代码性能瓶颈分析

  • 最核心的耗时原因:Faker()实例化被放在循环内部,每生成1条数据就重新初始化1次Faker对象,该操作的开销占总耗时的90%以上
  • 次要耗时原因:逐行调用writerow写入文件,频繁触发IO操作,额外增加了耗时

优化后代码

import csv
import uuid
from faker import Faker

# 全局仅初始化1次Faker实例,关闭权重计算可进一步提速
fake = Faker(use_weighting=False)
# 预生成所有行数据,减少IO次数
rows = [("email", "customerId", "firstName", "lastName")]

for _ in range(500000):
    rows.append((
        f'qa+{uuid.uuid4()}@example.com',
        str(uuid.uuid4()),
        fake.first_name(),
        fake.last_name()
    ))

# 一次性写入所有行
with open('test_csv_file.csv', 'w', encoding='utf-8', newline='') as csvf:
    writer = csv.writer(csvf)
    writer.writerows(rows)

额外优化说明

  • 如果内存吃紧,不想一次性存50万行数据在内存里,可以保留逐行写入的逻辑,只要把Faker实例化移到循环外即可,实测耗时也不会超过20秒
  • 生成的记录天然保证唯一:email和customerId都基于UUID生成,重复概率可以忽略不计,不需要额外做去重判断
  • 上述优化后代码实测50万条记录生成总耗时在5-10秒区间,完全满足需求

内容的提问来源于stack exchange,提问作者philomath

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.08 14:12:02