这是一段会吃掉几乎所有可用内存的代码:
def Decompress_Gzip_With_Progress_Bar(gzip_path, output_path):
with gzip.open(gzip_path, 'rb') as f_in:
with open(output_path, 'wb') as f_out:
file_size = Get_Uncompressed_Size(gzip_path)
chunk_size = 1024 * 1024
with tqdm(total=file_size, unit='B', unit_scale=True, desc="Decompressing " + gzip_path) as pbar:
for block in iter(lambda: f_in.read(chunk_size), b''):
f_out.write(block)
pbar.update(len(block))
它被用于解压一个解压后大概 4G 大小的文件。
直接在我的 16G 内存的开发虚拟机上运行,它会吃掉所有的内存。
但是,如果我把它放到一个分配 1G 内存的容器里,它不仅能运行,甚至还能运行得更快。
我试过用 resource 限制内存分配,但是它还是会吃满所有内存。
有没有什么能直接写到 Python 代码里的限制内存分配的方法呢?
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.