taizilongxu / interview_python

关于Python的面试题
16.63k stars 5.55k forks source link

GIL 部分描述有误 #66

Open Jax-Rene opened 5 years ago

Jax-Rene commented 5 years ago

线程全局锁(Global Interpreter Lock),即Python为了保证线程安全而采取的独立线程运行的限制,说白了就是一个核只能在同一时间运行一个线程.

主要是这一句:说白了就是一个核只能在同一时间运行一个线程. 多核操作系统下即使是并行计算一个核同时最多也只能有一个线程在运行计算。这里要表达的应该是Python的GIL锁导致Python无法进行并行计算只能并发,一个进程在进行多线程运算时,最多同时只能使用一个核来计算。如果需要使用多核计算需要用多进程而不是多线程。

个人理解,不知道是否有误,仅供参考哈!

maltoze commented 5 years ago

我也觉得GIL的描述有问题,下面是维基百科的解释。

CPython的线程是操作系统的原生线程。在Linux上为pthread,在Windows上为Win thread,完全由操作系统调度线程的执行。一个Python解释器进程内有一个主线程,以及多个用户程序的执行线程。即便使用多核心CPU平台,由于GIL的存在,也将禁止多线程的并行执行

GIL-维基百科