如何为我的Python脚本保留RAM?

时间:2019-03-13 14:17:06

标签: python memory sharing

我正在与其他学生共享我所在大学的服务器。服务器的RAM太小了,由于内存错误,我几乎无法运行程序。该脚本正在分块运行,但是如果服务器过载,那我就搞砸了。

您有什么建议吗?也许有一种方法可以为我的Python进程保留RAM。我知道从python释放内存是很重要的。也许我可以编写一个脚本,该脚本将在内存释放时将内存分配给我的Python。之后,我已经足够了,也许我可以使用gc.collect(),但是以某种方式确保将内存留在我的机器上以用于运行脚本?

谢谢!

编辑:我提供了脚本制动的步骤。我将数据分块保存。我昨天能够运行它!我知道我可以增加块的数量,但是今天发生这种情况时,我拉出的RAM不到5GB。

    for hour in np.arange(logins.hours.min(),logins.hours.max()+1):
        start_time = time.time()
        dict_choices=process_day(hour,dict_choices).copy()
        df=pd.DataFrame.from_dict(dict_choices,orient='index') 
        df['hour']=hour
        rezovi[i]=df
        i=i+1
        print("Handled hour {} in year {} in %s seconds (iteration {}) ---".format(-hour/mini,year,i) % round((time.time() - start_time),2))

        if ((i % 100)==0):
               rezultat=pd.concat([df for df in rezovi.values()], ignore_index=False).reset_index()
               keep=list(rezultat.columns.values[0:7])
               keep.append('hour')
               rezultat=rezultat[keep]
               rezultat=convert_types(rezultat,print_info=True)
               rezultat.to_csv('save/2018/chunk'+str(hour)+'.csv')
               del rezovi,rezultat,keep,df
               gc.collect()
               rezovi={}
               i=0

0 个答案:

没有答案