多线程对于IO密集性能的提升

来源:6-6 对于IO密集型程序,多线程是有意义的

weixin_慕慕8136048

2020-11-04

你好老师, 在Java中多线程可以用来在woker线程读取一个文件的同时主线程可以继续被执行,以达到性能的提升。可是在python中GIL让cpu不能同时处理多个python进程,也就是说有个worker线程在读取文件时,主线程是被挂起的,这和就让主线程去读取文件没有什么区别啊。还是说worker线程比主线程消耗更少的资源?请老师解释一下。

写回答

2回答

放牛班的春天0

2020-11-12

python的多线程是因为同一时间只能有一个线程工作,但是遇到IO密集的操作,GIL会释放,处理IO的线程是挂着等待IO操作了,但是你的其他线程也因此获得了GIL这把锁,可以继续工作。所以说多线程对IO密集操作有提升,因为单线程的话就全程堵着等IO了。

另外你说的"可是在python中GIL让cpu不能同时处理多个python进程"应该是笔误,每一个进程都是独立的,都有自己的GIL。

0
1
weixin_慕慕8136048
非常感谢!
2020-11-12
共1条回复

7七月

2020-11-04

课程里讲的好详细啊。。。不知道为什么要单独提问了?还是说课程里讲的没有解决你的疑问?


0
2
7七月
回复
weixin_慕慕8136048
我记得我解释了,运行单位并不是以线程为运行单位的,还分析了一条语句并不是一个执行单位。
2020-11-05
共2条回复

Python Flask高级编程之从0到1开发《鱼书》精品项目

7月老师深入浅出剖析Flask核心机制,和你一起探讨Python高级编程

2735 学习 · 1267 问题

查看课程