Ven*_*tta 24 python memory multiprocessing
我在使用python多处理库时遇到了一个奇怪的问题.
我的代码概述如下:我为每个"符号,日期"元组生成一个进程.我之后结合了结果.
我希望当一个进程完成"符号,日期"元组的计算时,它应该释放它的内存吗?显然情况并非如此.我看到几十个进程(虽然我将进程池设置为大小为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;
Run Code Online (Sandbox Code Playgroud)
use*_*881 16
尝试在池上设置maxtasksperchild参数.如果不这样做,则池会一次又一次地重复该过程,因此永远不会释放内存.设置后,将允许该过程死亡,并在其中创建一个新过程.这将有效地清理内存.
我想这是2.7中的新内容:http: //docs.python.org/2/library/multiprocessing.html#module-multiprocessing.pool
| 归档时间: |
|
| 查看次数: |
14788 次 |
| 最近记录: |