一个参数解决多线程的爆内存问题

1
class multiprocessing.pool.Pool([processes[, initializer[, initargs[, maxtasksperchild[, context]]]]])

如果你在做并发的时候,发现内存一直增长,最终报内存不足的错,然后你的任务相互没耦合,并且返回的结果并没那么大,那么你可以试试在pool初始化的时候加上maxtasksperchild=2的参数,这个参数会让每个线程完成n个任务后强制结束自己,以达到释放资源的目的。

1
pool = multiprocessing.Pool(maxtasksperchild=2)
comments powered by Disqus