并发编程小结
一、到底什么是线程?什么是进程? Python自己没有这玩意,Python中调用的操作系统的线程和进程。 二、Python多线程情况下: 计算密集型操作:效率低,Python内置的一个全局解释器锁,锁的作用就是保证同一时刻一个进程中只有一个线程可以被cpu调度,多线程无法利用多核优势,可以通过多进程方式解决,但是比较浪费资源。 IO操作:效率高 三、Python多进程的情况下: 计算密集型操作:效率高(浪费资源),不得已而为之。 IO操作:效率高(浪费资源) 四、为什么有这把GIL锁? Python语言的创始人在开发这门语言时,目的快速把语言开发出来,如果加上GIL锁(C语言加锁),切换时按照100条字节指令来进行线程间的切换。 五、Python中线程和进程(GIL锁) GIL锁,全局解释器锁。用于限制一个进程中同一时刻只有一个线程被cpu调度。 扩展:默认GIL锁在执行100个cpu指令(过期时间)。 查看GIL切换的指令个数 import sys v1 = sys。getcheckinterval() print(v1) 六、为什么要创建线程? 由于线程是cpu工作的最小单元,创建线程可以利用多核优势实现并行操作(Java/C#)。 注意: 线程是为了工作。 七、为什么要创建进程? 进程和进程之间做数据隔离(Java/C#)。 注意: 进程是为了提供环境让线程工作。 八