Python 多线程 和 多进程的CPU使用情况进行对比

Posted jbzd

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python 多线程 和 多进程的CPU使用情况进行对比相关的知识,希望对你有一定的参考价值。

Python 多线程 和 多进程的CPU使用情况进行对比

# 多进程
技术分享图片

这是没跑多进程之前的使用情况

跑了2个多进程之后:

技术分享图片

使用率 65%,

跑了4个多进程后:

 技术分享图片

CPU使用率:100%

 

 --------------------------------------------------分割线------------------------------------------------------------

多线程:

技术分享图片

开启了4个线程,但使用率始终是百分之20多,因为在Python里,永远只有一个线程在工作

-------------------------------------------------分割线---------------------------------------------------------------

 

 

java多线程:

技术分享图片

java开启两个线程死循环的使用率:52.3%

技术分享图片

java开启4个线程死循环的使用率:99%

------------------------------------------------------------分割线---------------------------------------------------

看到这里,你好像发现了什么!!

1、由以上图可见,Python的线程是多么的鸡肋。

2、当然,也知道,线程是可以并行的(4个线程分配到其他物理核心,在CPU的眼里,只有线程),线程是可能(可以)被分配到不同的CPU核心去执行的。

3、另外,CPU有一个策略,有的CPU虽然核心多,但不一定所有核心都在同时工作,因为要考虑到节能、发热等,它会选择性的关掉一些核心

4、python 能通过 多进程 + 主线程 的 方式实现并行

目前CPU的主流结构:

  N核N*2线程:例如 双核四线程,它是伪四核,不是真正意义上的四核,将每个物理核心模拟成4个逻辑核心

    就好比如:有两条各宽4米的马路(双核),被用横线规划成了8条1米的马路,那么它可以同时跑8辆宽度1米的小车,但是宽4米的车还是只能跑2辆

  N核N 线程: 例如 四核四线程

    就好比如: 有四条各宽4米的马路,能跑16辆1米的小车,也能跑4辆4宽米的车。这就是为什么同代i3 比 i5 便宜的原因,在小数据量的并行时,

          双核四线程是起作用的,但是大的数据量并行时,就比不上真四核了

 

 

以上是关于Python 多线程 和 多进程的CPU使用情况进行对比的主要内容,如果未能解决你的问题,请参考以下文章

python 多进程

Python的多线程和多进程模块对比测试

python-学习-python并发编程之多进程与多线程

011_Python中单线程多线程和多进程的效率对比实验

在python中单线程,多线程,多进程对CPU的利用率实测以及GIL原理分析

python中多进程+协程的使用以及为啥要用它