以下代码可以直观感受GIL锁对性能的影响
import time
from multiprocessing import Process
from threading import Thread
def count():
i = 100000000
while i > 0:
i -= 1
if __name__ == '__main__':
start = time.time()
count()
count()
count()
print("单线程运行3个任务", time.time() - start)
start = time.time()
ts = [Thread(target=count) for i in range(3)]
[t.start() for t in ts]
[t.join() for t in ts]
print("多线程运行3个任务", time.time() - start)
start = time.time()
ts = [Process(target=count) for i in range(3)]
[t.start() for t in ts]
[t.join() for t in ts]
print("多进程运行3个任务", time.time() - start)
运行结果:

由于python中多线程需要先得到GIL锁然后执行,这就导致python中的多线程并不能真正利用多核实现真正的多线程并行执行,反而会因为锁的竞争造成更多的消耗。
解决方法就是使用多进程