【问题标题】:how to analyze cpu time while benchmarking in python (multiprocessing)?如何在python(多处理)中进行基准测试时分析cpu时间?
【发布时间】:2017-03-18 23:24:41
【问题描述】:
以下是在 ipython 中使用 %time 进行分析后的结果-
单线程:
CPU时间:用户6m44s sys 1.78s 共6m46s
挂墙时间:5 分 19 秒
4 线程:
CPU时间:用户10m12s sys 2.83s 总共10m15s
挂墙时间:4 分 14 秒
多线程代码的 CPU 时间不应该更短吗?
此外,CPU 时间怎么可能超过挂墙时间,因为挂墙时间是总经过的时间。能否请您澄清一下这些术语。
【问题讨论】:
标签:
python
multithreading
performance
time
benchmarking
【解决方案1】:
No CPU time 是所有 cpu 在任务上花费的时间。因此,如果 cpu1 在一个任务上花费 2 分钟,而 cpu2 在同一个任务上花费 3 分钟,那么 cpu 时间将为 1 + 3 = 4。
所以在多线程程序中,我们预计 cpu 时间通常会超过 wall 时间。
现在你可能会问为什么你的单线程程序也是如此。答案可能是,即使您的代码没有明确使用并行性,您也可能使用了一个库。