我正在Python 3.4中工作,对内存中的分区数据执行朴素的搜索,并尝试派生进程以利用所有可用的处理能力.我之所以说是天真的,是因为我敢肯定还有其他一些事情可以做以提高性能,但是这些潜力超出了当前问题的范围.
我正在测试的系统是Windows 7 x64环境.
我想实现的是在cpu_count()-1个内核之间的相对均匀的同时分布(阅读表明,由于基线os系统进程,针对所有内核而不是n-1个内核进行分配不会显示任何其他改进).因此,对于4核计算机,有75%的钉住cpu使用率.
我所看到的(使用Windows任务管理器的“性能选项卡”和“进程选项卡”)是,我从未达到大于25%的系统专用cpu利用率,并且进程视图显示一次同时发生一个核心,而每隔几个核心切换一次分叉过程之间的秒数.
我没有使用代码来计时,但是我很确定我的主观观察是正确的,因为我没有获得我期望的性能提升(i5 3320m达到3倍).
我尚未在Linux上进行过测试.
根据显示的代码:
-如何达到75%的CPU使用率?
#pseudo code
def search_method(search_term, partition):
return results
partitions = []
search_terms = []
#real code
import multiprocessing as mp
pool = mp.Pool(processes=mp.cpu_count() - 1)
for search_term in search_terms:
results = []
results = [pool.apply(search_method, args=(search_term, partitions[x])) for x in range(len(partitions))]