同样的Python代码在Jupyter Notebook中比命令行慢20倍

1 投票
1 回答
91 浏览
提问于 2025-04-12 16:00

我有一段Python代码,使用Hugging Face的Transformers库来处理一个PDF文档的自然语言处理任务。当我在Jupyter Notebook中运行这段代码时,花了超过1.5小时才完成。然后我把同样的代码设置在一个本地的Streamlit网页应用上运行,结果让我惊讶,它只用了不到5分钟就完成了!

我觉得我比较的情况是一样的,因为:

  • 我在每种情况下分析的都是同一个PDF文档。
  • 因为Streamlit应用是本地运行的,所以所有计算都是在我的笔记本电脑的CPU上进行的。我没有使用任何Hugging Face的虚拟资源。HF模型是下载到我的电脑上的。
  • Jupyter Notebook也是在我的电脑上本地运行的。
  • 这个.py文件是通过' streamlit-juypter'从Jupyter Notebook生成的,它只是把笔记本中的Python代码提取出来,并添加了一些Streamlit的语句。

所以,基本上是同样的代码在同样的数据和硬件上运行。

我能想到的唯一可能解释这个现象的不同之处是:

  • Streamlit是从命令行运行一个.py的Python文件,而不是.ipynb的笔记本。
  • Streamlit是在一个虚拟环境中运行,而不是在我的主Python安装中。

有没有人遇到过类似的情况?从命令行运行同样的Python代码真的能让速度提高20倍吗?

编辑:根据@Wayne的建议,我比较了我的主Python安装和虚拟环境中的pip list输出,发现了一些差异。所以我把自然语言处理任务中使用的所有核心包更新到了最新版本,现在运行时间是一样的。虽然我仍然不知道是哪个包导致的,但现在可能也不重要了。

MS Excel的包版本比较 包版本比较

1 个回答

暂无回答

撰写回答