Python中文
首页
教程
问答
标签
搜索
登录
注册
Python文件内存优化集
回答此问题可获得
20
贡献值,回答如果被采纳可获得
50
分。
<p>我对Python很陌生。在python脚本中,我需要检查输入字符串是否存在于“titles”集合中;我从文件“titles”中以换行分隔的字符串加载该集合。它消耗大量内存。我选择存储在set中,因为后面还有<code>if inputstring in titles:</code>。你知道吗</p> <pre><code>Line # Mem usage Increment Line Contents ================================================ 1 6.160 MiB 0.000 MiB @profile 2 def loadtitles(): 3 515.387 MiB 509.227 MiB titles = open('titles').read().split() 4 602.555 MiB 87.168 MiB titles = set(titles) </code></pre> <p><strong>第一季度。有没有其他对象类型的内存效率更高来存储这些大数据?</strong></p> <p>我能想到的一个解决方案是,如果我将文件作为字符串加载,它消耗的内存与filesize完全相同;这是100%的最佳内存消耗。你知道吗</p> <pre><code>Line # Mem usage Increment Line Contents ================================================ 1 6.160 MiB 0.000 MiB @profile 2 def loadtitles(): 3 217.363 MiB 211.203 MiB titles = open('titles').read() </code></pre> <p>然后我可以做<code>if inputstring+'\n' in titles:</code></p> <p><strong>第2季度。有没有更快的替代方法?</strong></p>
0 条评论
分类:
Python问答
请先
登录
后评论
默认排序
时间排序
1 个回答
匿名
1天前
擅长:python、mysql、java
<p>迭代文件(逐行处理)而不是读取文件的全部内容将减少内存消耗。(与生成器表达式结合使用):</p> <pre><code>def loadtitles(): with open('titles') as f: titles = {word for line in f for word in line.split()} </code></pre>
请先
登录
后评论
针对此问题:
更多的回答
关注
89
关注
收藏
1
收藏,
216
浏览
网友 提问于 2天前
相关Python问题
将Pandas数据帧转换为PyTorch张量?
9 回答
将Pandas数据帧转换为scipy稀疏矩阵
3 回答
将Pandas数据帧转换为Spark Datafram时出现问题
1 回答
将pandas数据帧转换为spark DataFram时出错
8 回答
将Pandas数据帧转换为spark datafram时收到错误
6 回答
将Pandas数据帧转换为Spark数据帧
1 回答
将Pandas数据帧转换为Tensorflow数据
10 回答
将Pandas数据帧转换为tkinter obj
5 回答
将pandas数据帧转换为XML
8 回答
将Pandas数据帧转换为值sql语句
1 回答
将pandas数据帧转换为元组
10 回答
将pandas数据帧转换为元组列表
6 回答
将pandas数据帧转换为元组列表并删除所有pandas数据类型
10 回答
将pandas数据帧转换为具有头和数据类型的numpy数组
6 回答
将pandas数据帧转换为内存中的拼花地板,并将其加载到Python中的Hadoop中
9 回答
将pandas数据帧转换为内存中类似文件的对象?
3 回答
将Pandas数据帧转换为内存功能(&F)
6 回答
将pandas数据帧转换为列表列表
4 回答
将pandas数据帧转换为列表列表以输入到RNN
8 回答
将Pandas数据帧转换为单行DataFram
8 回答