Я столкнулся со странной проблемой при использовании библиотеки многопроцессорной обработки 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;