Python当前人气暴涨。它在DevOps,数据科学,Web开发和安全领域均有使用。
但是在速度方面没有赢得美誉。
这里有关于Python比较其他语言如,Java, C#, Go, JavaScript, C++进行性能对比,其中Python是最慢的。包含了JIT(C#, Java)和AOT(C,C++)编译器,也有像解释型语言如JavaScript。
注意:文章中我所提到的"Python"均指使用C语言实现的CPython。
为什么要比其他语言慢到2-10x的速度?
这是相关原因:它的GIL(Global Interpreter Lock)
因为是解释器型非编译型
因为是动态语言
那这些原因中哪个占最大成分呢?
它的GIL
现代计算机大多数都具备多核,有时还有多处理器。为了充分利用这些处理能力,操作系统底层提供了一个叫做线程的东西,它(例如Chrome浏览器)可以系统内容创建多个线程进行指令处理。也就是说当一个进程是CPU密集型,那就可以通过多个核协同工作来提高应用的运行速度。
我本地Chrome浏览器当前会开启44个线程,在不同的操作系统例如POSIX(Mac OS和Linux)和Windows提供的线程API结构不一样。操作系统来负责线程的调度。
如果你之前并没有进行过多线程编程,你需要熟悉一个叫做锁的概念。不像单线程进行,你需要确保在内存改变一个变量时,多个线程不会同时进行操作。
CPython创建变量时,它会开辟内存,然后计算有多少引用该变量,这个概念叫做引用计数。如果引用技术为0时,它会将内存释放回给系统。这也就是创建临时变量,