爱上python系列------python性能(七):lru_cache为函数计算加速

缓存在计算的时候可以避免重复计算,现在的数据库很多也提供缓存技术,比如redis

python的functools 模块就提供了一个工具,可以使用装饰器进行给函数进行缓存(LRU),重复的参数的就不进行重复计算了

下面做一个实验

1.不使用缓存

import functools
import math
import numpy as np
import time

ls=[int(np.random.rand()*100) for i in range(1000000)]
#@functools.lru_cache(maxsize=100)
def memoized_sin(x):
    return math.sin(math.sin(math.sin(math.sin(math.sin(math.sin(x))))))
start=time.time()
for i in ls:
	memoized_sin(i)
print(time.time()-start)
#print(memoized_sin.cache_info())

结果:

1.314882755279541

2.使用缓存:

import functools
import math
import numpy as np
import time

ls=[int(np.random.rand()*100) for i in range(1000000)]
@functools.lru_cache(maxsize=100)
def memoized_sin(x):
    return math.sin(math.sin(math.sin(math.sin(math.sin(math.sin(x))))))
start=time.time()
for i in ls:
	memoized_sin(i)
print(time.time()-start)
#print(memoized_sin.cache_info())

结果:

0.22953534126281738

差距还是蛮大的,如果函数计算越复杂,那么就越节省时间

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值