多线程对于IO密集性能的提升
来源:6-6 对于IO密集型程序,多线程是有意义的
weixin_慕慕8136048
2020-11-04
你好老师, 在Java中多线程可以用来在woker线程读取一个文件的同时主线程可以继续被执行,以达到性能的提升。可是在python中GIL让cpu不能同时处理多个python进程,也就是说有个worker线程在读取文件时,主线程是被挂起的,这和就让主线程去读取文件没有什么区别啊。还是说worker线程比主线程消耗更少的资源?请老师解释一下。
写回答
2回答
-
python的多线程是因为同一时间只能有一个线程工作,但是遇到IO密集的操作,GIL会释放,处理IO的线程是挂着等待IO操作了,但是你的其他线程也因此获得了GIL这把锁,可以继续工作。所以说多线程对IO密集操作有提升,因为单线程的话就全程堵着等IO了。
另外你说的"可是在python中GIL让cpu不能同时处理多个python进程"应该是笔误,每一个进程都是独立的,都有自己的GIL。
012020-11-12 -
7七月
2020-11-04
课程里讲的好详细啊。。。不知道为什么要单独提问了?还是说课程里讲的没有解决你的疑问?
022020-11-05
相似问题