Press "Enter" to skip to content

通过缓存函数使Python变得更快:记忆法

PYTHON PROGRAMMING

本文讨论了使用Python标准库进行记忆化技术。functools.lru_cache装饰器使得这一过程非常简单!

您可以要求Python记住已经返回的函数,并使用它。图片来源:Kelly Sikkema在Unsplash上的照片

我们都知道Python有时候运行速度很慢:

Python的运行速度并不那么糟糕!

我经常听到Python运行速度太慢了。真的吗?

VoAGI.com

Python中最耗费时间的通常是调用运行耗时的函数和类方法。假设您需要对相同参数运行这样一个函数两次,即使两次调用的结果完全相同,它仍然需要两倍的时间。有没有可能只记住这个结果,并在需要时再次使用呢?

是的,可以!这就是所谓的记忆化技术,它是编程中常用的术语。您可以实现自己的记忆化技术,但事实是,您并不需要这样做。Python为您提供了一个强大的记忆化工具,并将其收录在标准库中:functools.lru_cache装饰器。

尽管记忆化技术通常非常高效,但它在Python的教程中经常被忽略,即使是那些描述性能分析和内存优化的书籍也是如此。提到Python中的记忆化技术的书籍包括Julien Danjou的《Serious Python》,Luciano Ramalho的《Fluent Python, 2nd ed.》,Steven F. Lott的《Functional Python Programming, 3rd ed.》。

本文展示了两件事情:使用Python标准库中的记忆化技术(即使用functools.lru_cache)是多么简单,以及这种技术的强大之处。然而,并不是一帆风顺。因此,我们还将讨论使用functools.lru_cache缓存工具时可能遇到的问题。

使用functools模块进行缓存

functools.lru_cache

Python提供了多种记忆化工具,但今天我们讨论的是Python标准库中的一个:functools.lru_cache

Leave a Reply

Your email address will not be published. Required fields are marked *