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

pandas 1.3.3执行to_feather在任务计划程序下报ArrowMemoryError求解

问题根因分析
  • 架构不匹配:你遇到的realloc of size 3221225472 failed报错是尝试分配3GB连续内存失败,最常见的原因是批处理/任务计划调用的是32位版本Python,而PyCharm调用的是64位Python。32位Windows程序的用户态内存最大仅支持2-3GB,完全无法满足3GB的分配请求,直接触发内存错误。
  • 旧版本PyArrow bug:PyArrow 5.0为2021年发布的旧版本,存在Feather写入时内存预分配计算错误的已知问题,会申请数倍于数据集实际大小的连续内存,270MB的数据集触发3GB内存申请正是该bug导致的。
  • 运行环境限制:Windows任务计划默认配置下的内存配额、权限等级低于交互式登录的PyCharm环境,若勾选“无论用户是否登录都运行”选项,还会进一步限制可分配的内存上限;同时批处理未主动指定Python路径时,会优先调用环境变量中排序靠前的32位Python,而非PyCharm使用的64位虚拟环境/全局Python。
解决方案
  • 固定64位Python路径
    先在脚本开头加入代码确认运行环境:
    import sys, platform
    print(f"Python位数: {platform.architecture()[0]}")
    print(f"Python路径: {sys.executable}")
    
    若确认批处理调用的是32位Python,直接修改批处理命令,写死PyCharm中使用的64位Python绝对路径:
    call "C:\你的Python64位完整路径\python.exe" "myprogram.py"
    
  • 升级PyArrow修复内存bug
    直接升级到PyArrow最新稳定版即可解决内存预分配错误问题:
    pip install --upgrade pyarrow
    
    若因项目兼容要求不能升级大版本,可在写入Feather前加入配置禁用预分配:
    import pyarrow as pa
    pa.set_option("preallocate_contiguous_memory", False)
    
  • 优化写入逻辑减少内存占用
    现有写法df.reset_index().to_feather()会生成临时DataFrame拷贝,额外占用内存,修改为无临时拷贝的写法:
    df.reset_index(drop=False, inplace=True)
    df.to_feather(feather_path, compression="zstd")
    
    开启zstd压缩可同时降低文件大小和运行时内存需求。
  • 调整任务计划配置
    若使用任务计划调度,勾选「使用最高权限运行」,优先选择「仅在用户登录时运行」,避免后台运行的内存配额限制。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 14:06:03