如何为Python脚本保留RAM?

2024-05-21 02:02:16 发布

您现在位置:Python中文网/ 问答频道 /正文

我在我的大学里和其他学生共用一台服务器。服务器的RAM太小了,而且由于内存错误,我几乎无法运行程序。脚本是分块运行的,但是如果服务器过载,我就完蛋了。在

你有什么建议吗?也许这是我的Python进程保留内存的方法。我知道从python释放内存是非常重要的。也许我可以编写一个脚本,当Python空闲时,它将把内存分配给它。以后,我有足够的,也许我可以用gc.收集(),但不知何故确保内存保留在我的计算机上以运行脚本?在

谢谢!在

编辑:我提供了脚本刹车的步骤。我正在将数据分块保存。我昨天就能跑了!我知道我可以增加块的数量,但今天我拉不到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

Tags: 内存in服务器脚本dfindextimegc