cpu time区分

时间区分

  1. wall-clock time(or real time)
    指的就是现实当中时钟走的的时间
  2. user cpu time
    指user code运行消耗的cpu时间
  3. system cpu time
    指system code运行消耗的cpu时间
    如系统执行read, write等I/O的时间

几个结论

  1. wall time < cpu time
    说明程序进行了并行操作
  2. wall time > cpu time
    说明发生了磁盘读写,网络传输的等待延迟

测试

#!/bin/bash
# sum.sh
sum=0

for i in {1..10000}
do
  let sum=$sum+$i
done
echo "Sum of range from 1 to 10000 is: $sum"
chmod u+x sum.sh
time ./sum.sh

参考https://stackoverflow.com/questions/7335920/what-specifically-are-wall-clock-time-user-cpu-time-and-system-cpu-time-in-uni

### 如何在Python中测量CPU时间 在Python中,可以通过多种方法来测量程序运行所消耗的CPU时间。以下是几种常用的方法及其具体实现方式。 #### 使用 `time.process_time` 测量CPU时间 `time.process_time()` 是一种简单而有效的方式,可以返回当前进程的系统和用户CPU时间总和(不包括睡眠时间)。这种方法适用于精确测量代码片段的CPU使用情况[^1]。 ```python import time start_time = time.process_time() # 被测代码段 result = sum(i * i for i in range(10_000)) end_time = time.process_time() cpu_time_used = end_time - start_time print(f"CPU Time used: {cpu_time_used} seconds") ``` #### 使用 `timeit.default_timer` 结合 `time.process_time` 如果需要更灵活地控制计时器的行为,可以选择 `timeit.default_timer` 并指定其基于 `process_time` 的行为[^2]。 ```python from timeit import default_timer as timer def cpu_timer(): start = timer(process_time=True) result = sum(i * i for i in range(10_000)) end = timer(process_time=True) cpu_time_used = end - start print(f"CPU Time used with process_time: {cpu_time_used} seconds") cpu_timer() ``` #### 利用 `resource` 模块获取详细的CPU时间统计 对于更加复杂的场景,特别是当需要区分用户时间和系统时间时,可以借助 `resource` 模块中的 `getrusage` 函数[^3]。 ```python import resource def get_cpu_times(): usage = resource.getrusage(resource.RUSAGE_SELF) user_time = usage.ru_utime # 用户态下的CPU时间 system_time = usage.ru_stime # 系统态下的CPU时间 total_cpu_time = user_time + system_time return {"User Time": user_time, "System Time": system_time, "Total CPU Time": total_cpu_time} initial_usage = get_cpu_times() # 执行被测试函数 sum(i * i for i in range(10_000)) final_usage = get_cpu_times() for key in initial_usage.keys(): delta = final_usage[key] - initial_usage[key] print(f"{key}: {delta:.6f} seconds") ``` 以上种方法各有特点,可以根据实际需求选择适合的方式来测量CPU时间。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值