Python 死循环为什么能跑满 CPU?求解

2017-10-13 09:58:01 +08:00
 uhayate
def dead_loop():
    while True:
        pass


dead_loop()


在双核的 macbook pro 上,活动监视器显示跑满 cpu。 不应该只能利用单核达到 50%么

8500 次点击
所在节点    Python
16 条回复
arischow
2017-10-13 10:02:45 +08:00
这应该就是单核的比例
shuax
2017-10-13 10:04:42 +08:00
天啦,我的程序可以跑 400%
RqPS6rhmP3Nyn3Tm
2017-10-13 10:05:54 +08:00
显然是单核的比例,我这儿 top 经常 400%
uhayate
2017-10-13 10:06:33 +08:00
@arischow 好像就是这样的。我看了一下是逻辑 cpu 是 4 核,开 4 个程序就 400%
uhayate
2017-10-13 10:08:44 +08:00
@BXIA 嗯嗯
coltguo
2017-10-13 10:20:36 +08:00
哎,其实还好
CreSim
2017-10-13 11:23:14 +08:00
Unix 衍生系统的负载:1=一个核满载。。
我的路由器平均负载都是 1.x 也就是 100+%
simpleapples
2017-10-13 12:23:29 +08:00
activity monitor 中的 100%是单核的比例 再开一个 python 跑 while true 就是将近 200%了
scriptB0y
2017-10-13 12:46:02 +08:00
@simpleapples 楼上真像,不然 monitor 里面加起来超过 100%了
azh7138m
2017-10-13 13:54:20 +08:00
@CreSim 也不全是,安卓日常 20+
Sapp
2017-10-13 15:20:59 +08:00
这个占用跑到 100 多都有的,得看下面那个占用。
opengps
2017-10-13 15:26:09 +08:00
所有语言的死循环都可以跑满 cpu,循环就是消耗计算,靠 cpu 完成的
est
2017-10-13 15:28:07 +08:00
谁贴一个纯 CPython 代码跑满所有 CPU 的我给他加分!
ToughGuy
2017-10-13 15:33:37 +08:00
@est

import multiprocessing as mp
from concurrent.futures import ProcessPoolExecutor

def fn():
while 1:
pass

with ProcessPoolExecutor() as executor:
for i in range(mp.cpu_count()):
executor.submit(fn)





对齐我懒得弄了。
est
2017-10-13 15:38:03 +08:00
@ToughGuy 不错。不过单进程能实现不 (滑稽脸)
ToughGuy
2017-10-13 15:40:52 +08:00
@est

这很无聊额。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/397263

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX