我在 ubuntu 上使用 python 进行文本分析。尽管程序正在执行大量工作,但系统监视器中显示的 CPU 使用率始终保持在 12%。
我将程序的优先级从 改为 ,Normal
但Very High
没有效果。
是什么限制了我的 python 程序可以获得的 CPU 使用量以及如何改变它,以便程序可以利用更多的 CPU 能力?
答案1
我假设你的 CPU 有 8 个虚拟核心(可能是四核超线程)?这意味着一个满载的 CPU 线程/虚拟核心等于总负载的 12.5%。
Python 解释器是一个默认情况下仅作为单个进程运行的应用程序,因此无法利用多个虚拟核心。即使您用它运行的代码使用多线程,它仍然只会使用一个 CPU 线程/虚拟核心,因为GIL(全局解释器锁)。
只有当你的 Python 程序使用多处理,它实际上启动了 Python 解释器的多个实例并让它们真正并行地执行任务,您可以利用多个虚拟核心/CPU 线程。(正如@SargeBorsch 在他的评论中指出的那样,还有一些高级方法可以在没有多处理的情况下实现这一点,但这通常不是您自己快速编写的东西。)
答案2
另一种可能性(在这种情况下可能性较小)是程序受磁盘限制,即程序对磁盘的读写速度很慢,并且 CPU 正在等待磁盘。