你真的相识Python吗?什么场景行使多线程,什么场景行使多历程?
弁言 涉及并发的场景,各人想到行使多线程或多历程办理并发题目; 一样平常环境下,办理多并发场景题目,大都说话回收多线程编程模式(线程是轻量级的历程,共用一份历程空间)。 也同样合用于Python多并发处理赏罚吗? 答:不是的,针对并发处理赏罚,Python多线程和多历程是有很大差此外! Python多线程和多历程差别 Python多线程不能行使CPU多核资源,即统一时候,只有一个线程行使CPU资源,以是行使Python多线程不能算是并发。 假如想要充实操作CPU多核资源,做到多并发,这就必要Python多历程的了! 也就是说:只有Python多历程才气操作CPU多核资源,做到真正的多并发! Python多线程和多历程应用场景 既然Python多线程不能并发,那存在尚有什么意义呢? 着实Python多线程和多历程有本身的应用场景:
留意:Python多线程和多历程在平常开拓进程中,必要留意行使,假如行使Python多线程方法处理赏罚计较麋集型使命,它比现实单历程处理赏罚机能还要慢!以是要留意,看场景范例。 再谈Python多线程,全局表明器锁(GIL) 为什么Python多线程不能行使CPU多核资源? 为什么Python多线程在统一时候,只有一个线程行使CPU资源? 正是由于Python有一个全局表明器锁(GIL,全称Global Interpreter Lock),它使得Python多线程无法行使CPU多核资源,担保统一时候只有一个线程在行使CPU资源;当呈现IO阻塞时,解锁,开释CPU资源,其他线程才气申请到锁,行使CPU资源。 Python并发编程 Python多历程编程行使的模块库:multiprocessing模块,是Python内置的多历程处理赏罚库,行使与线程库threading.Thread相同。 Python多线程编程行使的模块库:
增补: multiprocessing模块 和 multiprocessing.dummy模块 两者的区别在于:前者是多历程,后者是多线程;可是他们编程接口完全同等; 以是很利便的将代码在多线程和多历程举办切换! 因为篇幅有限,暂不先容编程模块详细行使,往后会开专题补上! 之前清算的Python多线程和多历程思想导图供各人参考: Python多历程编程 Python多线程编程
(编辑:河北网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |