我在ubuntu上使用python进行文本分析。尽管工作量很大,程序仍在处理CPU使用率,如系统监视器中所示,该值始终保持在12%。
我将程序的优先级从更改为Normal
,Very High
但是没有效果。
是什么限制了我的python程序可以获得的CPU使用量,以及如何更改它,以便该程序可以利用更多的cpu功能?
我在ubuntu上使用python进行文本分析。尽管工作量很大,程序仍在处理CPU使用率,如系统监视器中所示,该值始终保持在12%。
我将程序的优先级从更改为Normal
,Very High
但是没有效果。
是什么限制了我的python程序可以获得的CPU使用量,以及如何更改它,以便该程序可以利用更多的cpu功能?
Answers:
我假设您的CPU具有8个虚拟核(可能是具有超线程的四核)?这意味着一个满载的CPU线程/虚拟内核等于总负载的12.5%。
Python解释器是一个默认情况下仅作为一个进程运行的应用程序,因此无法利用多个虚拟内核。即使您运行的代码使用多线程,由于GIL(全局解释器锁),它仍将仅使用一个CPU线程/虚拟内核。
仅当您的Python程序使用multiprocessing时,实际上启动了Python解释器的多个实例并使它们真正并行地执行您的任务,您才可以利用多个虚拟核/ CPU线程。(正如@SargeBorsch在他的评论中指出的那样,也有一些高级方法无需多处理即可实现这一目标,但这通常不是您快速编写自己的东西。)
Jython
或者IronPython
,它没有GIL。