Appearance
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