我正在[
{
"week_number": 19,
"month": "May",
"year": 2019,
"dates":[
6,7,8,9,10
]
},
{
"week_number": 20,
"month": "May",
"year": 2019,
"dates":[
13,14,15,16,17
]
}
]
中加载大量数据,这几乎填满了计算机中的全部内存。我一直在尝试通过调用 this.getDates(new Date(), (new Date()).addDays(14));
getDates(startDate, stopDate) {
var dateArray = [];
var currentDate = startDate;
while (currentDate <= stopDate) {
dateArray.push(currentDate)
currentDate = currentDate.addDays(1);
}
return dateArray;
}
或使用python 2.7.15rc1
从内存中删除它,这是我的最终解决方案,将所有内容都移到del
中,据我所知,应自行清理。
gc
不幸的是,我实际遇到的是当我按下main
时所用的内存保持不变。这给我带来了问题,因为在此之后,我想调用失败的if __name__ == "__main__":
main(args)
gc.collect()
print("sleeping")
time.sleep(120)
subprocess.call(["ls"])
,因为它无法分配足够的内存(据我所知,sleep
试图分配与已经分配或类似的东西。
有人知道这里发生了什么,我能做什么吗?
答案 0 :(得分:1)
由于Python是垃圾回收语言,因此我们无法保证调用del
或使用gc.collect()
会立即将整个内存移回主进程,以供下一个操作使用。
作为一种解决方法,您可以从主进程中生成另一个线程,并在完成其任务后杀死该线程,以释放其内存。
import multiprocessing
def dfprocessing_func(data):
# Execute task's code
return df
p = multiprocessing.Pool(1)
df = p.map(dfprocessing_func, [data])[0]
p.terminate()
p.join()
基于Andrey Nikishaev ~ Why doesn't Python release the memory when I delete a large object?