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

Windows下Python加载大CSV至Pandas无堆栈跟踪崩溃排查

解决Pandas加载大CSV时Python无预警崩溃的问题

我之前碰到过几乎一模一样的糟心事!当时试图把几个GB级的CSV文件加载到Pandas里,刚运行没多久就弹出“Python已停止工作”的对话框,终端里却连半条错误信息都没有——一开始我也默认是内存不够,折腾了好一阵才找到真正的根源。

先排查内存问题(虽然后来证明不是,但值得走一遍流程)

  • 用memory_profiler监控内存变化,确认是不是真的内存溢出:
    先安装模块:pip install memory-profiler,然后给加载函数加装饰器:
    from memory_profiler import profile
    import pandas as pd
    
    @profile
    def load_big_csv():
        df = pd.read_csv("your_large_file.csv")
        return df
    
    if __name__ == "__main__":
        load_big_csv()
    
    运行后会输出每一行代码的内存占用,能直观看到加载过程中内存的变化趋势。
  • 试试分批加载CSV,用chunksize参数拆分数据:
    chunk_generator = pd.read_csv("your_large_file.csv", chunksize=10000)
    for idx, chunk in enumerate(chunk_generator):
        print(f"处理第{idx+1}块,数据量:{chunk.shape}")
        # 这里可以加简单的处理逻辑,看单块会不会崩溃
    
    如果分批加载还是崩溃,基本可以排除是内存总量不足的问题。

强制生成崩溃时的堆栈跟踪

因为系统直接崩溃没日志,得让Python在崩溃时输出堆栈信息:

  • Windows环境下,先在命令行执行set PYTHONFAULTHANDLER=1,再运行你的脚本;
  • 或者在脚本里主动启用faulthandler模块:
    import faulthandler
    faulthandler.enable()  # 启用崩溃时的堆栈打印
    
    import pandas as pd
    df = pd.read_csv("your_large_file.csv")
    
    这样下次崩溃时,终端会输出详细的堆栈信息,能帮你定位到具体是Pandas哪段代码出了问题。

我的最终解决办法

折腾一圈后发现,根本不是内存的问题,就是Pandas旧版本的bug!我当时用的是20.3版本,执行pip install --upgrade pandas升级到最新稳定版之后,加载大CSV再也没出现过崩溃的情况。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 09:07:27