You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python中process_time()计时结果始终为0.0,求解决方案

关于Python中process_time()的工作原理及计时为0的问题

一、process_time()的工作原理

  • process_time() 是Python标准库time模块中的函数,它返回当前进程占用CPU的总时间,包含用户态执行时间和内核态执行时间,但不计算进程休眠、等待IO等非CPU工作的时间。
  • 返回值为浮点数,单位是秒,其精度依赖于操作系统的时钟粒度(多数系统是微秒级)。如果代码执行时间短于这个粒度,就会返回0.0。

二、你的计时结果为0.0的原因

你的斐波那契实现用了缓存(记忆化),计算range(1500)内的斐波那契数时,每个数值只会被计算一次,递归的开销几乎可以忽略,整个任务的CPU执行时间远低于process_time()的精度阈值,所以最终差值显示为0.0。

三、解决方法

1. 改用更高精度的计时器

使用time.perf_counter(),它是专门用于测量短时间间隔的高精度计时器,精度比process_time()更高,能捕捉到更短的执行时间:

from time import perf_counter

t = perf_counter()

def fibonacci_of(n):
    if n in cache:
        return cache[n]
    cache[n] = fibonacci_of(n - 1) + fibonacci_of(n - 2)
    return cache[n]

cache = {0: 0, 1: 1}
fib = [fibonacci_of(n) for n in range(1500)]
print(fib[-1])
print(perf_counter() - t)

2. 增加计算负载

如果一定要用process_time(),可以通过重复计算来增加总CPU时间,比如把计算逻辑放在循环里执行多次:

from time import process_time

t = process_time()

def fibonacci_of(n):
    if n in cache:
        return cache[n]
    cache[n] = fibonacci_of(n - 1) + fibonacci_of(n - 2)
    return cache[n]

# 重复计算1000次
for _ in range(1000):
    cache = {0: 0, 1: 1}
    fib = [fibonacci_of(n) for n in range(1500)]

print(fib[-1])
print(process_time() - t)

3. 计算更大范围的数值

比如把range(1500)改成range(10000),这样计算量会显著增加,CPU时间足够被process_time()捕捉到。

内容的提问来源于stack exchange,提问作者Alexander Konukhov

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 01:05:25