Pandas调用to_csv方法未保存文件,exit code -9报错原因是什么
问题原因解答
exit code -9的含义
在类Unix(你当前使用的Linux)系统中,exit code -9代表进程收到了SIGKILL信号,被系统强制终止运行。这种终止不可拦截、不可忽略,绝大多数场景下的触发原因是系统内存不足,OOM(Out Of Memory)守护进程为了保障系统整体稳定,主动杀掉了内存占用过高的Python脚本进程。
是否和文件体积过大有关
该问题完全由处理文件体积过大引发:
- 300MB的CSV文件用pandas加载到内存后,实际占用内存通常是原文件的3~10倍,本身就会占用数GB内存
- 你的代码中逐行复制全量关键词字典存入
list_of_dicts,如果关键词数量、CSV行数较多,这部分会额外产生成倍的内存开销 - 进程在执行到
to_csv写入步骤前就已经被系统杀死,因此目标路径不会生成输出文件
优化建议
你可以通过以下修改降低内存占用,完成处理需求:
- 用pandas向量化操作替代嵌套循环:直接调用
df[指定列名].str.count(关键词)统计每个关键词的出现次数,无需逐行遍历,内存占用和运行效率都会大幅提升 - 分块处理大文件:调用
pd.read_csv(文件路径, chunksize=10000)按块读取CSV,处理完一块就追加写入输出文件,不需要把全量数据加载到内存 - 无需提前构建全量字典列表,处理完一行/一块就直接写入结果,避免冗余内存占用
内容的提问来源于stack exchange,提问作者BrianEbrahimi
相关产品推荐
相关产品推荐

