Форум сайта python.su
0
Здравствуйте,
Поискал тут, и в гугле и чёткого ответа не нашёл поэтому обращаюсь к вам.
Есть демон который периодически запускает очередь заданий (около 100-150ти) в несколько потоков (например в 10 потоков),
как только все потоки выполняют свои задания - демон засыпает на определённое время. - затем всё повторяется.
Почему не крон? - потому что так удобнее, т.к. неизвестно сколько времени будут выполнятся задания. (хотя я понимаю что можно решить эту проблему и при помощи крона)
Так вот, всё работает как и должно за исключением того что через сутки скрипт уже использует 1.5 Гб оперативки - память не освобождается.
Саму очередь делаю при помощи кода: http://code.activestate.com/recipes/577187/
Что я могу в принципе в коде делать не так как нужно? (судя по логам все треды завершают свою работу нормально)
Есть ли какие то рекомендации вообще в какую сторону смотреть?
Или может быть вообще не стоило делать это на потоках, а лучше например сделать через twisted асинхронно.
В общем дайте какую нибудь информацию к размышлению.
Офлайн
0
python memory profiling, узнайте чем заняты 1.5 гб
Офлайн
32
ThreadPool один раз создаете или периодический?
Офлайн
0
cookie-god
Спасибо, посмотрю
o7412369815963
Получается при каждом запуске очереди, т.е. раз в сорок минут примерно.
while True:
pool = ThreadPool(concurrency=10)
for num, data in enumerate(srvs): #len(srvs) ~ 150
pool.add_task(run_command, something...)
pool.wait_completion()
sleep(минут на сорок)
a = 'string'
a = 'string2'
Отредактировано (Май 5, 2011 20:48:10)
Офлайн
32
> Это что получается что питон не чистит весь мусор?
потому что это мусором ещё не является
в каждом цикле создается дополнительно +10 потоков, итого за сутки 24*60/40 * 10 = +360 потоков
pool = ThreadPool(concurrency=10) нужно вынести вне цикла
Офлайн
0
Да да я уже понял в ошибся, как перепишу, напишу о результате.
Спасибо.
UP
Хотя уже и так понятно было что поможет, но так как обещал - то пишу.
Вобщем вынес эту строку за цикл. 12 часов - 80 Мб.
Ещё раз спасибо.
Отредактировано (Май 9, 2011 18:59:42)
Офлайн