问答详情
源自:3-3 代码对比剖析Python多进程,多线程,单进程单线程1

3-2节例子的疑问

3-2节的例子,老师用来说明多线程的副作用,主要是因为例子是计算密集型的,如果是IO密集型的例子,应该是多线程的耗时更短吧?因为IO密集型,当前线程遇到阻塞可以转去执行别的线程,交给系统的去处理就行,但是计算密集型的,本身是占用CPU资源的,也就失去了多线程的作用,反而因为时间片的切换耗时导致效率更低。请问我的理解对吗?

提问者:AustinCheng 2020-11-09 09:50

个回答

  • 慕侠1360162
    2021-01-23 11:04:51

    IO密集型,确实多线程耗时更短

    CPU核数可以理解为里面有几个工人,单核里面只有一个,多核有n个,对于n个工时量的项目,单核需要n小时完成,而多核有n个工人同时干,只需要一个小时就能完成;

    但python中由于GIL的存在,同时只能有一个线程运行。就好多核里面的n个工人,但同时只能有1个人工作,其他只能划划水,多核的优势完全被浪费掉了。而且还多了几个工人去抢着工作耗费的无意义时间,也就是你所说的时间片的切换耗时,所以导致耗费时间比单线程要更多。