gpt4 book ai didi

python - 内存错误 : out of memory

转载 作者:太空宇宙 更新时间:2023-11-04 09:57:11 41 4
gpt4 key购买 nike

我写了一个下载应用程序、电影和其他程序的程序。但是当我运行它时,出现了这个错误:

Traceback (most recent call last):
File "tidopy.py", line 27, in <module>
data=urllib2.urlopen(addresslist[x]).read()
File "C:\Python27\lib\socket.py", line 362, in read
buf.write(data)
MemoryError: out of memory

我认为错误与这段代码有关:

data=urllib2.urlopen(addresslist[x]).read()
file=open(namelist[x],'wb')
file.write(data)

data是下载电影等数据的变量

文件就是文件

和 file.write(data) 将数据放入文件

tidopy 是我的程序名..

我该如何解决?

帮助。

最佳答案

看起来您正在从 url 下载文件并将其写入文件,但在此期间您希望 data 保存整个文件,这发生在您计算机的内存中(页面文件的 RAM) ) 当文件很大(如电影)时用完。

解决方案是在下载文件时写入每个文件 block ,而不是将整个文件加载到内存中然后才写入。如果你想使用它,我有一个小代码可以做到这一点:

import requests # just a choice of comfort for me
def download(url_address, filename):
response = requests.get(url_address, stream=True)
response.raise_for_status()
with open(filename, "wb") as f:
total_length = response.headers.get('content-length')
if total_length is None:
f.write(response.content)
else:
total_length = int(total_length)
for data in response.iter_content(chunk_size = total_length / 100):
f.write(data)

如果您注意到,我设置了 chunk_size = total_length/100,这意味着每次 data 中的下载达到 1% 时,它就会写入文件,然后它被接下来进来的 1% 的数据所取代,所以它总是占用存储在内存中的数据的 1%。如果您正在下载的文件太大而无法处理内存中的 1%,您应该将 chunk_size 替换为固定的字节数,可能是 1,000,000(大约 1 MB)

关于python - 内存错误 : out of memory,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45318787/

41 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com