1. 本际云推荐 - 专业推荐VPS、服务器,IDC点评首页
  2. 云主机运维
  3. VPS运维

python多线程对多核cpu的利用解析

Python多线程与多核CPU的相关理解

小编写这篇文章的一个主要目的,是为了给大家做一个详细的解答,解答的内容包括对Python多线程的理解,以及其对多核CPU的利用情况。请各位读者仔细阅读下文。

python多线程对多核cpu的利用解析

多核CPU的利用情况

我们经常听到"因为GIL的存在,Python的多线程不能利用多核CPU",但是经过实验验证,我们发现Python的线程是可以利用多核CPU的。虽然之前一直认为Python运行时会绑定到其中一个核心上,但实际上不是这个情况。根据实验结果,我们可以得出结论:Python线程是可以在多个核心上进行负载的,这是由于Linux中CPU对进程的亲和性导致的。不过这种亲和性是软性的,并不是强制的。另外,需要提醒大家的是,每个进程都有一个GIL。

Python线程的执行流程理解

Python线程的执行流程是这样的:线程抢GIL->CPU。这种执行流程导致了CPU密集型的多线程程序虽然能够利用多核CPU,但效率却会比单线程低。但是需要强调的是,线程在拿到CPU资源后,并不是一直在执行。Python解释器会在执行了该线程100条字节码之后,释放掉该线程的GIL。如果没有加锁,其他线程就可能修改该线程用到的资源。此外,遇到IO的时候,也会释放GIL。

综上所述,虽然因为GIL的存在,Python的多线程不能让多个核同时工作。但Python的线程确实可以利用多核CPU,并且在某些情况下,可以获得比单线程有更好的性能。

原创文章,作者:小编小本本,如若转载,请注明出处:https://www.benjiyun.com/yunzhujiyunwei/vps-yunwei/7125.html