GIL GIL锁: 全局解释器锁. Cpython特有的一把互斥锁,自动加锁解锁 将并发变成串行同一时刻同一进程中只有一个线程被执行使用共享资源 ,牺牲效率,保证数据安全. 同一个进程中的多个线程只能有一个线程真正被cpu执行 设置全局解释锁: GIL 保证解释器里面的数据安全. 当时开发py语言时,只有单核, 强行加锁: 减轻了你开发的人员的负担. 单个进程多线程不能利用多核,为什么不去掉? 不能去掉,源码太多,改不动了 不能用多核会影响效率吗 看处理数据情况 我们有四个任务需要处理,处理方式肯定是要玩出并发的效果,解决方案可以是: 方案一:开启四个进程 方案二:一个进程下,开启四个线程 #单核情况下,分析结果: 如果四个任务是计算密集型,没有多核来并行计算,方案一徒增了创建进程的开销,方案二胜 如果四个任务是I/O密集型,方案一创建进程的开销大,且进程的切换速度远不如线程,方案二胜 #多核情况下,分析结果: 如果四个任务是计算密集型,多核意味着并行计算,在python中一个进程中同一时刻只有一个线程执行用不上多核,方案一胜 如果四个任务是I/O密集型,再多的核也解决不了I/O问题,方案二胜 #结论:现在的计算机基本上都是多核,python对于计算密集型的任务开多线程的效率并不能带来多大性能上的提升,甚至不如串行(没有大量切换),但是