我有一个Python脚本,可以计算非常大的文本中每个k长的子字符串的出现次数。在存储和删除重复的子字符串之后,这是这样做的:
counts = {}
for s in all_substrings:
counts[s] = full_text.count(s)
我很惊讶地看到该脚本平均仅使用4%的CPU。我有一个4核8线程CPU,但是没有一个核以超过一位数的百分比使用。我本来希望该脚本使用一个内核的100%,因为它不执行IO。
为什么它使用的计算能力这么少,我该如何改善呢?
答案 0 :(得分:1)
您的代码段可能是内存带宽受限的程序。您几乎不需要执行该循环中的任何操作。但是,大多数cpu监视程序报告仅访问内存的程序为100%。我也很困惑。
如果您想了解更多事情,我建议您使用出色的perf tool in linux。
您可以先查看页面错误
# Sample page faults with stack traces, until Ctrl-C:
perf record -e page-faults -ag
答案 1 :(得分:0)
我是Dell XPS 15中BD PROCHOT bug的受害者,该公司不断将CPU限制为800 Mhz。通过ThrottleStop禁用BD PROCHOT可以解决此问题,并且我的脚本现在使用了100%的CPU内核。