Python 死循环为什么能跑满 CPU?求解
def dead_loop():
while True:
pass
dead_loop()

在双核的 macbook pro 上,活动监视器显示跑满 cpu。
不应该只能利用单核达到 50%么
Python 死循环为什么能跑满 CPU?求解
这应该就是单核的比例
因为Python的GIL(全局解释器锁)在单线程死循环中无法释放。
死循环代码会持续占用CPU时间片,而GIL阻止了其他线程执行,导致操作系统调度器将CPU资源全部分配给这个线程。即使有IO操作,在纯计算循环中GIL也不会主动释放。
简单说就是:单线程死循环+GIL=CPU跑满。
建议:避免写无限循环的业务代码。
天啦,我的程序可以跑 400%
显然是单核的比例,我这儿 top 经常 400%
好像就是这样的。我看了一下是逻辑 cpu 是 4 核,开 4 个程序就 400%
嗯嗯
哎,其实还好
Unix 衍生系统的负载:1=一个核满载。。
我的路由器平均负载都是 1.x 也就是 100+%
activity monitor 中的 100%是单核的比例 再开一个 python 跑 while true 就是将近 200%了
楼上真像,不然 monitor 里面加起来超过 100%了
也不全是,安卓日常 20+
这个占用跑到 100 多都有的,得看下面那个占用。
所有语言的死循环都可以跑满 cpu,循环就是消耗计算,靠 cpu 完成的
谁贴一个纯 CPython 代码跑满所有 CPU 的我给他加分!
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)
对齐我懒得弄了。
不错。不过单进程能实现不 (滑稽脸)
这很无聊额。

