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