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

Python中使用random.choice(Training_Data)导致内存激增的原因咨询

内存持续暴涨的原因分析

问题核心出在numpy数组的特性和代码里的错误逻辑上,拆解来看:

  • numpy数组是固定大小的,每次调用np.delete(Training_Data, count, 0)时,并不会直接修改原数组,而是创建一个全新的数组,再把Training_Data变量指向这个新数组。旧数组如果还有未释放的引用,就不会被Python垃圾回收机制清理,会一直占用内存。
  • 内层循环for lines in Training_Data在遍历数组的同时修改了Training_Data的指向,此时迭代器还持有对旧数组的引用,导致旧数组无法被回收。循环500次就会堆积500个旧数组,内存自然急剧增长。

而换成Value = random.choice(Data_Matrix)时内存问题消失,是因为你的count索引计算错误:
你在内层循环里让count从0开始,每遍历一个元素就+1,找到匹配元素时用count作为索引删除——但numpy数组索引从0开始,这里的count其实是当前元素的位置+1,导致你每次删除的是下一个元素,而非匹配的那个。这会让Training_Data里的目标元素根本没被正确删除,当从Data_Matrix选元素时,内层循环大概率找不到匹配项,也就不会执行np.delete,自然不会不断创建新数组堆积内存。

总结核心原因:

  • np.delete每次创建新数组,旧数组因迭代器引用无法回收,内存持续堆积
  • 索引计算错误导致删除逻辑失效,进一步加剧了内存浪费

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 14:15:34