python 手动释放内存_Python手动清理内存
写程序这方面,自己不是科班出身,本科时唯一的C语言课也没有好好听讲。导致后来写代码的时候十分不规范,也缺失了许多细节,日常遇到的自己给自己挖的坑还是有必要记录一下,方便以后复盘。
就像现在,前脚写完的代码后脚就忘了怎么写了……
这段代码主要是处理了一下打文件读取过程中内存不够的问题,中间也对DataFrame进行了一系列操作,结果具体的操作怎么实现的自己已经不记得了……目前还没调试好。
import pandas as pd
import numpy as np
import gc
import os
feature = ['111,222,333,444',
'111,222,333,444',
'111,222,333,444',
'111,222,333,444',
'111,222,333,444',
'111,222,333,444']
dict_in = {'111':'yiyiyi','222':'ererer','333':'sjsjsj','444':'sisisi'}
df = pd.DataFrame(feature,columns=['test'])
def batch_in(df_in,batch,dict_in,str_in='test'):
'''分批传入,写出,处理数据,清理内存,从硬盘读取,输出'''
if os.path.isfile('test_tmp.csv'):
os.remove('test_tmp.csv')
for i in range(1,df_in.shape[0]//batch):
#Pandas扩列操作
df_tmp = df_in[str_in][batch*(i-1):batch*i].str.split(',',expand=True)
for j in df_tmp.columns:
df_tmp[j] = df_tmp[j].map(dict_in)
df_tmp.to_csv('test_tmp.csv',mode='a',header=False,index=0)
del df_tmp
gc.collect()
df_tmp = df_in[str_in][batch*(df_in.shape[0]//batch-1):].str.split(',',expand=True)
for j in df_tmp.columns:
df_tmp[j] = df_tmp[j].map(dict_in)
df_tmp.to_csv('test_tmp.csv',mode='a',header=False,index=0)
del df_tmp
gc.collect()
df_out = []
with open('test_tmp.csv','r') as f:
for line in f:
df_out.append(line.strip())
return df_out
df_out = batch_in(df,1,dict_in)
DataFrame中对字符串列进行扩列时可以使用df['column'].str.split(',',expand=True)的方法来根据间隔类型来处理,但这本质是Series的方法,DataFrame中只能针对列来操作;
DataFrame中想要改变单元格中的值可以使用df.map(dict)的方法,传入一个字典来实现修改内容的映射;
使用batch对python对象进行切片时注意最后一部分的遗留问题;
手动释放内存时逐次执行del a;gc.collect();
可以df.to_csv(mode='a',header=False)来完成内容追加,注意同时指定header=False来确保不打印表头;
python 手动释放内存_Python手动清理内存相关推荐
- android电视机清理内存,电视如何清理内存?当贝市场告诉你
原标题:电视如何清理内存?当贝市场告诉你 相信大家经常会遇到这种情况,电视用着用着就显示内存不足了,这可怎么办?难道要换电视了?其实这种问题很常见的,刚好有换台电视这个打算的朋友,可以换台内存更大的电 ...
- python内存清理_python如何清理内存
引用计数,这是 Python 的垃圾回收策略.补充一下. 解释器(也就是你说的 Shell)负责跟踪对象的引用计数,垃圾收集器负责释放内存. 如何释放?可以通过销毁对象的引用,使引用计数减少至 0.假 ...
- 做python开发要用多大的内存_Python 在分配内存需要考虑的问题
由此能看出可变对象在扩充时的秘密:超额分配机制:申请新内存时并不是按需分配的,而是多分配一些,因此当再添加少量元素时,不需要马上去申请新内存 非均匀分配机制:三类对象申请新内存的频率是不同的,而同一类 ...
- python读取进程内存_Python读取Linux内存进程错误(/ proc / $pid / mem...
我已经在某些Linux发行版(Debian,Linux Mint -)上测试了以下代码,并且可以正常工作,但是在CentOS下,即使我以root身份运行,也会出现错误: #!/usr/bin/env ...
- python mysql 内存_Python将系统内存使用量写入mysql数据库
1.前提创建数据库和表格式 [root@python ~]# mysql -uroot -pcentos mysql> create database memory; mysql> use ...
- python太占内存_Python占用的内存优化教程
概述 如果程序处理的数据比较多.比较复杂,那么在程序运行的时候,会占用大量的内存,当内存占用到达一定的数值,程序就有可能被操作系统终止,特别是在限制程序所使用的内存大小的场景,更容易发生问题.下面我就 ...
- python多进程共享内存_python 进程间通信 共享内存
python多进程通信实例分析 python多进程通信实例分析操作系统会为每一个创建的进程分配一个独立的地址空间,不同进程的地址空间是完全隔离的,因此如果不加其他的措施,他们完全感觉不到彼此的存在.那 ...
- python标签整理 微信_Python实现清理微信僵尸粉功能示例【基于itchat模块】
本文实例讲述了Python实现清理微信僵尸粉功能.分享给大家供大家参考,具体如下: 原理 通过Pyhton调用itchat模块登录网页版微信,给你所有好友发送特殊符号,对方收不到这个特殊符号,只要有人 ...
- Android一键清空内存,Android 一键清理内存(ARM)
public void killProcess(){ ActivityManager activityManger=(ActivityManager) this.getSystemService(AC ...
最新文章
- django07 字符串替换
- jquery颜色转换html,jQuery颜色选取器插件COLPICK
- java迭代器 异常_java迭代器失效 | 学步园
- Android项目实战视频教程_快递轨迹查询应用开发
- Spark Executor解析
- 请说明Request和Session的生命周期
- 音频源代码_使用开放源代码从丢失的格式中恢复音频
- 下划线间隔数字 排序_面试必备:经典算法动画解析之希尔排序
- Amdahl定律以及该定律在多核时代的影响
- 关于局部变量的几个难点
- Arduino 函数-IO输出输入
- DiskFileUpload类
- 通过cmd上传文件ftp服务器,通过cmd完成FTP上传文件操作
- 女黑客登场:轻松破解APP,共享单车任我骑!
- zip压缩文件内中文名字符编码解压乱码问题
- 2022年需要关注的八大云计算发展趋势
- HBase-14.1-JMX监控实战-hadoop
- 企业微信个人二维码在哪里?会失效吗?
- 程序员需要了解的硬核知识之操作系统入门
- Python有趣应用之Python帮你潜伏侦查网聊美女
热门文章
- .NET平台2008年大事记
- .NET---物件导向与类别设计
- 推荐给大家一个php代码格式化在线工具
- JAVA学习 Day4(对象和类、引用数组)
- android监听支付宝支付成功,Andriod监听支付宝收款实现个人支付宝支付接口!附安卓App...
- CSDN用户名修改问题的最新见解!
- 【翻译】西川善司为了3D游戏粉丝的[生化危机5]图形讲座(后篇)
- MEPG-4标准的主要技术概览及编码(转)
- PVE安装openwrt后,pve无法联网
- App Store游戏付费榜前三,推荐一款Cocos Creator制作的文字类游戏