gpt4 book ai didi

python - 为什么python线程会消耗这么多内存?

转载 作者:太空宇宙 更新时间:2023-11-03 12:42:18 24 4
gpt4 key购买 nike

为什么python线程会消耗这么多内存?

我测量生成一个线程会消耗 8 兆内存,几乎与一个全新的 Python 进程一样大!

操作系统:Ubuntu 10.10

编辑:由于大众需求,我将给出一些无关的例子,这里是:

from os import getpid
from time import sleep
from threading import Thread

def nap():
print 'sleeping child'
sleep(999999999)

print getpid()
child_thread = Thread(target=nap)
sleep(999999999)

在我的盒子上,pmap pid 会给出 9424K

现在,让我们运行子线程:

from os import getpid
from time import sleep
from threading import Thread

def nap():
print 'sleeping child'
sleep(999999999)

print getpid()
child_thread = Thread(target=nap)
child_thread.start() # <--- ADDED THIS LINE
sleep(999999999)

现在 pmap pid 将给出 17620K

因此,额外线程的成本是 17620K - 9424K = 8196K

即。 87% 的人运行全新的独立流程!

现在是不是,错了?

最佳答案

这不是特定于 Python 的,并且与操作系统为每个线程分配的单独堆栈有关。您操作系统上的默认最大堆栈大小恰好是 8MB。

请注意,8MB 只是一 block 预留的地址空间,最初分配给它的内存很少。额外的内存在需要时提交到堆栈,最多 8MB 限制。

可以使用 ulimit -s 调整限制,但在这种情况下,我认为没有理由这样做。

顺便说一句,pmap 显示了地址空间 的使用情况。这不是衡量内存 使用情况的好方法。如果相关的话,这两个概念是完全不同的。

关于python - 为什么python线程会消耗这么多内存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5636660/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com