[图片上传中...(截图 2023-05-01 15-04-58.png-7e35e1-1682924713837-0)] 截图 2023-05-01 15-04-58.png
运行结果:
截图 2023-05-01 15-06-18.png
同时有两个核轮流占用50%,这就是GIL同时时刻只有一个线程可以执行代码;哪个线程先取得GIL就先执行,当此线程有IO堵塞的时候会释放GIL锁,当此线程没有IO堵塞持续执行100条命令时候也会释放GIL锁,来让下一个线程轮流执行。
为什么有了GIL,还要有互斥锁?
GIL是针对线程的,保证同时只有一个线程在执行,GIL是线程锁,针对线程,而不是进程。GIL是宏观的操作。
互斥锁是针对共享资源的,互斥锁保证了每次只有一个线程进入写入操作,从而保证了多线程情况下数据的正确性。是微观的操作。
2023-05-01
网友评论