我在使用Python的multiprocessing库时遇到了一个奇怪的问题。
我的代码如下:我为每个“symbol, date”元组生成一个进程,之后再将结果合并。
我期望当一个进程完成“symbol, date”元组的计算后,它应该释放内存。但显然情况并非如此。我看到有很多进程(尽管我将进程池的大小设置为7),它们在机器上被挂起¹。它们不占用CPU,也不释放内存。
我该如何让进程在完成计算后释放内存呢?
谢谢!
¹ 挂起的意思是指它们在ps命令的状态中显示为“S+”。
我的代码如下:我为每个“symbol, date”元组生成一个进程,之后再将结果合并。
我期望当一个进程完成“symbol, date”元组的计算后,它应该释放内存。但显然情况并非如此。我看到有很多进程(尽管我将进程池的大小设置为7),它们在机器上被挂起¹。它们不占用CPU,也不释放内存。
我该如何让进程在完成计算后释放内存呢?
谢谢!
¹ 挂起的意思是指它们在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;