程序员为了进行性能优化,需要编写一个用于查看函数执行时间的装饰器,请帮忙设计,并使用求统计[m,n]该区间内素数的个数函数和求10000次字符串累加运算函数分别进行测试
时间: 2024-10-20 18:07:05 浏览: 16
Python装饰器的函数式编程详解
为了创建一个用于测量函数执行时间的装饰器,我们可以使用Python的`functools`模块中的`wraps`来保持原函数的元信息,然后利用`timeit`模块来计算函数的运行时间。下面是一个简单的装饰器设计示例:
```python
import time
from functools import wraps
def timer_decorator(func):
@wraps(func)
def wrapper(*args, **kwargs):
start_time = time.time()
result = func(*args, **kwargs)
end_time = time.time()
print(f"{func.__name__} executed in {end_time - start_time} seconds")
return result
return wrapper
# 示例函数:求[m, n]区间内的素数个数
@timer_decorator
def count_primes_in_range(m, n):
def is_prime(num):
if num < 2:
return False
for i in range(2, int(num**0.5) + 1):
if num % i == 0:
return False
return True
primes = [i for i in range(m, n+1) if is_prime(i)]
return len(primes)
# 示例函数:10000次字符串累加运算
@timer_decorator
def string_accumulation():
s = ""
for _ in range(10000):
s += "a" * 100
return s
# 使用装饰器
count_primes_in_range(10, 20)
string_accumulation()
```
当你运行上述代码,它会打印出两个函数各自的执行时间和返回结果。
阅读全文