这是一段会吃掉几乎所有可用内存的代码:
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 代码里的限制内存分配的方法呢?
|