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

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

# 多进程

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

跑了2个多进程之后:

使用率 65%,

跑了4个多进程后:

 

CPU使用率:100%

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

多线程:

扫描二维码关注公众号,回复: 1946745 查看本文章

开启了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 便宜的原因,在小数据量的并行时,

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

猜你喜欢

转载自www.cnblogs.com/jbzd/p/9279856.html