这话有一定道理,但不代表是事实。 先从多线程说起,需要先理清串行、并行和并发的概念。 从上图可知,并行的效率是最高的。 如果cpu等待外部任务完成的时间大于线程切换的时间,那么并发的效率是高于串行的。因此并发在绝大多数情况下比串行的效率高。 对于单核cpu下的多线程就是采用并发的方式。 python是解释型的语言,在设计之初为了数据安全,采用GIL(全局解释器锁): 1:每个线程需要先获取GIL 2:得到GIL的线程执行代码,主动sleep让出cpu或被挂起。 3:释放GIL以便下一个线程获取。 熟悉多线程编程的朋友,应该很轻易的理解。 显然python里一个进程永远只能由一个线程拿到GIL,GIL需要反复的释放、获取。 因此说'Python的多线程是鸡肋'是有道理的。 但是,就如同单个cpu采用并发的方式一样,能否认它的作用吗? 对于cpu密集型的线程来说,GIL确实影响很大。对于IO密集型,影响很小。 |
|
来自: 庆亮trj21bcn0z > 《编程》