AustinCheng
2020-11-09 09:50
3-2节的例子,老师用来说明多线程的副作用,主要是因为例子是计算密集型的,如果是IO密集型的例子,应该是多线程的耗时更短吧?因为IO密集型,当前线程遇到阻塞可以转去执行别的线程,交给系统的去处理就行,但是计算密集型的,本身是占用CPU资源的,也就失去了多线程的作用,反而因为时间片的切换耗时导致效率更低。请问我的理解对吗?
IO密集型,确实多线程耗时更短
CPU核数可以理解为里面有几个工人,单核里面只有一个,多核有n个,对于n个工时量的项目,单核需要n小时完成,而多核有n个工人同时干,只需要一个小时就能完成;
但python中由于GIL的存在,同时只能有一个线程运行。就好多核里面的n个工人,但同时只能有1个人工作,其他只能划划水,多核的优势完全被浪费掉了。而且还多了几个工人去抢着工作耗费的无意义时间,也就是你所说的时间片的切换耗时,所以导致耗费时间比单线程要更多。
深入浅出剖析Python的全局解释锁GIL
2608 学习 · 9 问题
相似问题