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

2024-05-15 11:45:15 发布

您现在位置:Python中文网/ 问答频道 /正文

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

我估计生成一个线程会消耗8meg的内存,几乎相当于一个全新的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

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

^{pr2}$

现在pmap pid将给出17620K

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

例如,运行一个全新的独立进程的87%!在

这不就是,错了吗?在


Tags: 内存fromimportchild进程ubuntusleep线程
1条回答
网友
1楼 · 发布于 2024-05-15 11:45:15

这不是Python特有的,它与操作系统为每个线程分配的单独堆栈有关。操作系统上默认的最大堆栈大小正好是8MB。在

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

可以使用ulimit -s调整该限制,但在本例中,我认为没有理由这样做。在

另外,pmap显示了地址空间的使用情况。这不是衡量内存使用情况的好方法。这两个概念如果有联系的话,是截然不同的。在

相关问题 更多 >