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

2017 年 10 月 13 日
 uhayate
def dead_loop():
    while True:
        pass


dead_loop()


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

9559 次点击
所在节点    Python
16 条回复
arischow
2017 年 10 月 13 日
这应该就是单核的比例
momo1999
2017 年 10 月 13 日
天啦,我的程序可以跑 400%
RqPS6rhmP3Nyn3Tm
2017 年 10 月 13 日
显然是单核的比例,我这儿 top 经常 400%
uhayate
2017 年 10 月 13 日
@arischow 好像就是这样的。我看了一下是逻辑 cpu 是 4 核,开 4 个程序就 400%
uhayate
2017 年 10 月 13 日
@BXIA 嗯嗯
coltguo
2017 年 10 月 13 日
哎,其实还好
CreSim
2017 年 10 月 13 日
Unix 衍生系统的负载:1=一个核满载。。
我的路由器平均负载都是 1.x 也就是 100+%
simpleapples
2017 年 10 月 13 日
activity monitor 中的 100%是单核的比例 再开一个 python 跑 while true 就是将近 200%了
scriptB0y
2017 年 10 月 13 日
@simpleapples 楼上真像,不然 monitor 里面加起来超过 100%了
azh7138m
2017 年 10 月 13 日
@CreSim 也不全是,安卓日常 20+
Sapp
2017 年 10 月 13 日
这个占用跑到 100 多都有的,得看下面那个占用。
opengps
2017 年 10 月 13 日
所有语言的死循环都可以跑满 cpu,循环就是消耗计算,靠 cpu 完成的
est
2017 年 10 月 13 日
谁贴一个纯 CPython 代码跑满所有 CPU 的我给他加分!
ToughGuy
2017 年 10 月 13 日
@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 日
@ToughGuy 不错。不过单进程能实现不 (滑稽脸)
ToughGuy
2017 年 10 月 13 日
@est

这很无聊额。

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

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

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

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

© 2021 V2EX