五千年(敝帚自珍)

主题:Lua 语言? -- GUNXU

共:💬18 🌺22
全看分页树展 · 主题 跟帖
家园 去除GIL比较困难

Python的作者Guido van Rossum 在2007年9月写过一篇Blog: It isn't Easy to Remove the GIL

GIL一方面使得GC(引用计数)容易实现,一方面限制了多线程只能同时使用一个核。

在Python早期,尚未会有现在这么广泛严肃的应用需求,当时个人电脑使用多CPU也还罕见,因此问题尚不严重,后来在1999年Greg Stein 等人进行了尝试去除GIL,虽然实现了GIL去除,但是性能反而下降了(至少对于单线程的应用来说是下降的)。

现在新的GIL实现相对旧的性能有所改进,另外Python的C扩展、磁盘IO、网络IO也会释放GIL,因此主要影响计算密集型应用,这类应用Python本来相对C、C++、Fortran速度也差很多,可以考虑密集运算部分写为C扩展,即提高了速度,也不受GIL限制。Cython也是提高性能相关的工具。

另外,还可以通过多进程来利用多核/CPU。

全看分页树展 · 主题 跟帖


有趣有益,互惠互利;开阔视野,博采众长。
虚拟的网络,真实的人。天南地北客,相逢皆朋友

Copyright © cchere 西西河