我使用 Python 来执行一些算法,无论我使用哪种 Python,并且我尝试了很多版本,CPU 使用率最高可达 25%。为什么 Python 不利用我剩余的 CPU 资源?我将服务的优先级从正常更改为高,然后更改为实时,中间重新启动,但没有任何改变。
有没有办法让 Python 使用我的 CPU 的 50% 甚至更多?
Jou*_*eek 20
很简单,您在具有 4 个逻辑核心的系统中运行单线程应用程序 - 因此,您有一个进程,使用所有核心。
您将(这很重要)需要将算法重写为多线程,或者查看是否可以在特定内核上运行 2 个或更多实例以使用更多 CPU。没有别的办法。
Rol*_*ith 16
Python 语言出现在多核 CPU 之前,因此它本身不使用它们并不奇怪。
此外,并非所有程序都可以从多核中获益。分步完成的计算,其中下一步取决于上一步的结果,使用更多内核不会更快。可以向量化的问题(对大型数据数组应用相同的计算)可以相对容易地使用多个内核,因为各个计算是独立的。
当您进行大量计算时,我假设您使用的是numpy?如果没有,请检查一下。它是用 C 编写的扩展,可以使用优化的线性代数库,如 ATLAS。与标准 Python 相比,它可以显着加快数值计算。
话虽如此,有几种方法可以在python中使用多核。
multiprocessing模块。本multiprocessing.Pool类提供跨越与多个CPU的矢量map()和相关方法。不过,这里有一个权衡。如果您必须在进程之间传输大量数据,那么这种开销可能会抵消多核的优势。请注意,该threading模块在这方面并不是那么有用。为了保持内存管理简单,全局解释器锁(“GIL”)强制一次只有一个线程可以执行 python 字节码。不过,像 numpy 这样的外部模块可以在内部使用多个线程。
|   归档时间:  |  
           
  |  
        
|   查看次数:  |  
           93416 次  |  
        
|   最近记录:  |