我正在与其他学生共享我所在大学的服务器。服务器的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