Спасибо, вы только что спасли мою жизнь @Guido, извините за вину, я буду хвалить питона на следующий вопрос.
у поток 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 выдаст 17620К
Таким образом, стоимость дополнительной нити составляет 17620 КБ - 9424 КБ = 8196 КБ.
то есть. 87% запускают совершенно новый отдельный процесс!
Не правда ли, не так ли?