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

Jupyter Notebook渲染DataFrame时内存占用持续增长的问题求助

Jupyter Notebook渲染DataFrame时内存占用持续增长的问题求助

大家好,我最近在Jupyter环境里处理大型数据集时遇到了一个头疼的内存问题,折腾了好几种方法都没解决,来这儿求助各位大佬!

先给大家看下我生成测试数据集的代码,特意做了个规模不小的数据集(300万行、100列),同时生成了Polars和Pandas两种格式:

import pandas as pd
import polars as pl

from sklearn.datasets import make_classification
from sklearn.model_selection import train_test_split

X, y = make_classification(
    n_samples=3_000_000,
    n_features=100,
    n_informative=20,
    n_redundant=10,
    n_repeated=0,
    n_classes=2,
    random_state=42,
    shuffle=False,
)

feature_names = [f"feature_{i}" for i in range(X.shape[1])]

X_polars = pl.DataFrame(X, schema=feature_names)
y_polars = pl.Series(values=y, name="target")
X_pandas = X_polars.clone().to_pandas()

接下来问题就出现了:当我在Jupyter单元格里执行如下代码,让Jupyter自动渲染DataFrame的HTML/纯文本格式输出时:

df = X_polars+1
df

第一次运行内存占用还正常,但每次重复运行同一个单元格,内存都会累加增长,哪怕我没保留新的变量引用也一样!

我用psutil监测了可用内存,情况如下:
第一次运行的代码和输出:

# First time running
import psutil
print(psutil.virtual_memory().available / (1024 ** 3))
df = X_polars+1
df

输出结果:

26.315258026123047
`df` table (这里是Jupyter渲染出的表格)

第四次运行同样的单元格后,可用内存直接降到了:

19.47336196899414

我试过各种排查手段,问题依然存在:

  • 换成Pandas的X_pandas执行同样操作,内存还是会累加
  • 不定义df变量,直接运行X_polars+1让Jupyter渲染输出,内存还是涨
  • 换了Linux系统测试(我本地是Windows10),问题依旧
  • 手动调用gc.collect()强制垃圾回收,完全没用
  • 换了不同的IDE/环境:VSCode、Jupyter Notebook、Jupyter Lab,都有这个问题

但有两种情况不会出现内存增长:

  • 用print(X_polars+1)输出结果
  • 用print(df)输出结果

有没有大佬遇到过类似的问题?或者能帮我分析下为什么Jupyter自动渲染DataFrame会导致这种内存泄漏啊?

备注:内容来源于stack exchange,提问作者Kevin Li

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.13 18:49:28