为什么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%!
现在这难道不是错误的吗?