Python中文
首页
教程
问答
标签
搜索
登录
注册
填充列表时Python内存泄漏如何修复?
回答此问题可获得
20
贡献值,回答如果被采纳可获得
50
分。
<p>我有一段代码是这样的:</p> <pre><code>downloadsByExtensionCount = defaultdict(int) downloadsByExtensionList = [] logFiles = ['file1.log', 'file2.log', 'file3.log', 'file4.log'] for logFile in logFiles: log = open(logFile, 'r', encoding='utf-8') logLines = log.readlines() for logLine in logLines: date, time, c_ip, cs_method, s_port, cs_uri_stem, cs_user_agent = logLine.split(" ") downloadsByExtensionCount[cs_uri_stem] += 1 downloadsByExtensionList.<a href="https://www.cnpython.com/list/append" class="inner-link">append</a>([date, time, c_ip, cs_method, s_port, cs_uri_stem, cs_user_agent]) </code></pre> <p>这四个文件的大小都在150MB左右,每一个文件中有大约60000-80000行。在</p> <p>我开始只使用这些文件中的一个来编写脚本,因为这样可以更快地测试功能,但是现在我有了所有的逻辑和功能,我当然尝试同时在所有四个日志文件上运行它。当脚本开始从第四个文件获取数据时,我得到的是:</p> ^{pr2}$ <p>所以-我看了一下这个东西消耗了多少内存,这是我发现的:</p> <p>脚本读取前三个文件,并达到1800-1950MB左右,然后开始读取最后一个文件,增加50-100MB,然后我得到错误。 我试着在脚本中运行,最后一行(append)被注释掉,然后它的总容量达到了500MB左右。在</p> <p>那么,我做错什么了?这四个文件的总和大约为600MB,而脚本使用大约1500个文件填充列表,其中四个文件中只有三个</p> <p>我真不明白为什么。。我该如何改进?谢谢您。在</p>
0 条评论
分类:
Python问答
请先
登录
后评论
默认排序
时间排序
1 个回答
匿名
1天前
擅长:python、mysql、java
<p>直接迭代文件内容:</p> <pre><code>for logFile in logFiles: log = open(logFile, 'r', encoding='utf-8') for logLine in log: ... log.close() </code></pre> <hr/> <p>使用<code>tuple</code>代替<code>list</code>:</p> ^{pr2}$
请先
登录
后评论
针对此问题:
更多的回答
关注
89
关注
收藏
1
收藏,
216
浏览
网友 提问于 2天前
相关Python问题
文本导入时标题行中的特殊字符
8 回答
文本小部件:在没有输入时更新并在循环后保持空闲
4 回答
文本小部件tkin
3 回答
文本小部件tkinter中的标签更改或文本外观更改是否有撤消功能?
7 回答
文本小部件tkinter复制图像选项
1 回答
文本小部件上的Python Tkinter ttk滚动条未缩放
2 回答
文本小部件上的滚动条可能需要根据制表符ord显示前进行滚动
9 回答
文本小部件不显示lis中的内容
3 回答
文本小部件不显示Unicode字符
5 回答
文本小部件中写入的行间距
8 回答
文本小部件中的文本作为变量
1 回答
文本小部件中的滚动条仅显示在底部
4 回答
文本小部件中的选项卡键空间计数
2 回答
文本小部件作为Lis
8 回答
文本小部件在主框架中扩展列宽
3 回答
文本小部件未使用删除功能清除
1 回答
文本小部件滚动动画(Tkinter、Python)
10 回答
文本居中。格式正确吗?
9 回答
文本差分算法
2 回答
文本已知时音频文件中的单词索引
9 回答