使用Rust扩展提升你的Python代码
使用Rust扩展提升Python代码
通过数量级提高速度并增强代码安全性
正如大多数人已经知道的那样,Python是一种针对简单性和易用性进行优化的通用编程语言。虽然它是一个用于轻量级任务的好工具,但代码执行速度很快就会成为程序的主要瓶颈。
在本文中,我们将讨论为什么与其他编程语言相比,Python如此慢。然后,我们将看到如何为Python编写一个基本的Rust扩展,并将其性能与原生Python实现进行比较。
Python为什么慢
在我们开始之前,我想指出,编程语言本身并不快或慢:它们的实现才是。如果您想了解语言和其实现之间的区别,请查阅本文:
最快的编程语言神话
必须消除的常见编程误解
betterprogramming.pub
首先,Python是动态类型的,这意味着变量类型仅在运行时而不是在编译时知道。虽然这种设计选择允许更灵活的代码,但Python解释器不能假设您的变量是什么以及其大小。因此,它无法像静态编译器那样进行优化。
使Python比其他替代方案更慢的另一个设计选择是臭名昭著的全局解释器锁(GIL)。全局解释器锁是一个互斥锁,只允许一个线程在任何时间点执行。GIL最初是为了保证线程安全而存在的,但却在多线程应用程序的开发人员中引起了巨大的反对。
此外,Python代码是通过虚拟机执行的,而不是直接在CPU上运行。这个额外的抽象层增加了与静态编译语言相比的显着执行开销。
此外,Python对象在内部被视为字典(或哈希映射),它们的属性(通过点运算符访问的属性和方法)通常不是通过内存偏移来访问,而是…