Skip to content

GIL全局解释锁

python里面的线程是一个任务, python和GIL没有关系, 这个是解释器的问题

默认的python解释器是使用的C语言, 这一个解释器难以移除GIL

GIL: 全局解释锁, 线程在执行的时候需要获取GIL, 保证同一个时刻只有一个线程在执行代码

在线程使用IO的时候会释放GIL, 避免阻塞, python的多线程可以使用多核CPU

在实际的运行的时候, 多线程的python程序最多只有一个核的算力

解决方法

实际执行的时候执行的线程代码使用其他的语言

可以使用python调用C语言的库

python
from ctypes import *
from threading import Thread
from ctypes import *

lib = cdll.LoadLibrary("lib.so")

t = Thread(target=lib.run)		# 执行这一个库里面的函数
t.start()

while True:
    pass