python时间测试

最简单的方法

import time

def my_function():
    time.sleep(2)  # 模拟一个耗时的操作

start_time = time.time()
my_function()
end_time = time.time()

print(f"函数运行时间: {end_time - start_time} 秒")

使用 perf_counter

perf_counter 提供了高精度的计时功能,非常适合测量短时间间隔。

import time

def my_function():
    time.sleep(2)  # 模拟一个耗时的操作

start_time = time.perf_counter()
my_function()
end_time = time.perf_counter()

print(f"函数运行时间: {end_time - start_time} 秒")

使用 timeit 模块

import timeit, time
def my_function():
    time.sleep(2)  # 模拟一个耗时的操作
# 测试 my_function 运行2次所需时间
execution_time = timeit.timeit(my_function, number=2)
print(f"函数运行时间: {execution_time} 秒")

使用 cProfile 模块

cProfile 模块用于性能分析,能够提供更详细的运行时间报告。

import cProfile

def my_function():
    time.sleep(2)  # 模拟一个耗时的操作

cProfile.run('my_function()')

使用上下文管理器测量时间

类似与C++的构造函数和析构函数的时间差。

import time

class Timer:
    def __enter__(self):
        self.start = time.time()
        return self # 返回上下文管理器对象自身

    def __exit__(self, *args):
        self.end = time.time()
        self.interval = self.end - self.start

def my_function():
    time.sleep(2)  # 模拟一个耗时的操作

with Timer() as timer:
    my_function()

print(f"函数运行时间: {timer.interval} 秒")

with 语句在 Python 中用于简化资源管理和确保在使用完资源后自动进行清理。它主要通过上下文管理器实现。上下文管理器是一种实现了 enterexit 方法的对象。这两个方法分别在进入和退出 with 语句块时自动调用。

进入上下文:当执行 with Timer() as timer: 时,Python 会调用 Timer 类的 enter 方法。

返回上下文管理器对象:enter 方法返回 self,即当前的 Timer 实例。这使得 timer 变量指向该实例。

在上下文中使用对象:由于 timer 变量现在指向 Timer 实例,所以在 with 块中可以访问 Timer 实例的属性和方法。例如,在 print(f"函数运行时间: {timer.interval} 秒") 中,可以访问 timer.interval 来获取函数的运行时间。

包装到模块

'''
文件名: timer.py

使用方法:

import timer
with timer.Timer():
    # 要测试的代码
    pass 
    
'''
import time
class Timer:
    def __enter__(self):
        self.start = time.time()
    def __exit__(self, *args):
        self.end = time.time()
        print(f"运行时间: {self.end - self.start} 秒")
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值