如何提高Python的CPU使用率

3

我是一名新手程序员,所以有些迷茫。

我写了一个小的Python函数,根据我的搜索区域运行时间相当长,这是可以预料的。

在达到某个阈值后,大约一百万条记录,我的程序似乎总是会迷失方向。Python shell没有反应,但CPU使用率始终保持在大约13%左右。另外,我无法通过KeyboardInterrupt停止程序执行。

所以我的问题是:是否可能增加我的Python程序的CPU使用率以使其运行更快?

另一个问题:为什么Python shell变得无响应?我没有使用过多内存,我只需要尽快循环遍历一个大集合。


3
Python shell不会突然无响应,它是由于您的代码造成了这种情况。同样,CPU利用率也是如此——您的代码没有充分利用它。因此问题不在Python本身,而是在您的代码中。请展示给我们您的代码,我们将尝试解决问题。 - freakish
瓶颈很可能是内存。你是否做了一些愚蠢的事情(比如:同时加载那些包含大数据的“百万”记录)?如果没有展示代码,我们只能对问题进行推测。 - michaelmeyer
1个回答

3

你的cpu是否是多核cpu?如果是,那么有几种方法可以使用python的多个核心。

内置的是multiprocessing模块。multiprocessing.Pool类提供了map()和相关方法,可在多个CPU上进行向量化。不过这里存在一个权衡。如果你必须在进程之间通信大量数据,则该开销可能抵消了多个核心的优势。 使用适当版本的numpy。如果numpy使用了多线程ATLAS库进行构建,则在处理大问题时速度会更快。 使用扩展模块,例如numexprparallel pythoncorepy或Copenhagen Vector Byte Code。

请注意,threading模块在此方面并不是很有用。为了使内存管理简单,全局解释器锁(“GIL”)强制一次只能执行一个线程的Python字节码。不过像numpy这样的外部模块可以在内部使用多个线程。


5
特别是,如果程序占用了8个核心中的1个,那将占用约12.5%的CPU使用率。 - Mechanical snail

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接