Многопроцессорность Python - Как освободить память после завершения процесса?

Я столкнулся со странной проблемой при использовании библиотеки многопроцессорной обработки python.

Мой код показан ниже: я создаю процесс для каждого кортежа «символ, дата». Потом комбинирую результаты.

Я ожидаю, что когда процесс выполнил вычисления для кортежа «символ, дата», он должен освободить свою память? видимо, дело не в этом. Я вижу десятки процессов (хотя я установил размер пула процессов 7), которые приостановлены¹ на машине. Они не потребляют процессор и не освобождают память.

Как мне позволить процессу освободить свою память после того, как он выполнил свои вычисления?

Спасибо!

¹ под "приостановлено" я имею в виду, что их статус в команде ps отображается как "S +"

def do_one_symbol( symbol, all_date_strings ):
    pool = Pool(processes=7)
    results = [];
    for date in all_date_strings:
        res = pool.apply_async(work, [symbol, date])
        results.append(res);

    gg = mm = ss = 0;
    for res in results:
        g, m, s = res.get()
        gg += g; 
        mm += m; 
        ss += s;
24
задан tzot 22 October 2011 в 17:07
поделиться