欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

python GIL

程序员文章站 2022-05-11 08:04:49
Python并不支持真正意义上的多线程。Python中提供了多线程包,但是如果你想通过多线程提高代码的速度,使用多线程包并不是个好主意。 Python中有一个被称为Global Interpreter Lock(GIL)的东西,它会确保任何时候你的多个线程中,只有一个被执行。 线程的执行速度非常之快 ......

python并不支持真正意义上的多线程。python中提供了多线程包,但是如果你想通过多线程提高代码的速度,使用多线程包并不是个好主意。

python中有一个被称为global interpreter lock(gil)的东西,它会确保任何时候你的多个线程中,只有一个被执行。

线程的执行速度非常之快,会让你误以为线程是并行执行的,但是实际上都是轮流执行。经过gil这一道关卡处理,会增加执行的开销。

这意味着,如果你想提高代码的运行速度,使用threading包并不是一个很好的方法。
不过还是有很多理由促使我们使用threading包的。如果你想同时执行一些任务,而且不考虑效率问题,那么使用这个包是完全没问题的,而且也很方便。

但是大部分情况下,并不是这么一回事,你会希望把多线程的部分外包给操作系统完成(通过开启多个进程),或者是某些调用你的python代码的外部程序(例如spark或hadoop),又或者是你的python代码调用的其他代码(例如,你可以在python中调用c函数,用于处理开销较大的多线程工作)。

 

本文首发于,博客园同步更新