如何在python中解冻请求下载文件?
我编写了一个python脚本,可以从internet下载文件。然而,每次我运行脚本时,我的计算机似乎都被冻结了 代码:如何在python中解冻请求下载文件?,python,python-requests,Python,Python Requests,我编写了一个python脚本,可以从internet下载文件。然而,每次我运行脚本时,我的计算机似乎都被冻结了 代码: response = requests.get(url, stream=True) with open(local_filename, 'wb') as f: for chunk in response.iter_content(chunk_size=2048): if chunk: f.write(chunk)
response = requests.get(url, stream=True)
with open(local_filename, 'wb') as f:
for chunk in response.iter_content(chunk_size=2048):
if chunk:
f.write(chunk)
f.flush()
我能做些什么来加载,这样我的电脑就不会冻结
我应该分配有限数量的ram吗?或者我应该创建一个线程来执行此操作
如有任何建议,将不胜感激。ty.如果我是你,我会增加块大小,并为底层I/O线程增加一些喘息空间,因此:
import time
response = requests.get(url, stream=True)
with open(local_filename, 'wb') as f:
for chunk in response.iter_content(chunk_size=1024*1024): # lets use 1 meg chunks
if chunk:
f.write(chunk)
f.flush()
time.sleep(0.05) # 50ms delay won't kill anyone
如果这没有帮助,那么您的系统/代码中的问题就比这一部分更深。如果我是您,我会增加块大小,并为底层I/O线程增加一些喘息空间,因此:
import time
response = requests.get(url, stream=True)
with open(local_filename, 'wb') as f:
for chunk in response.iter_content(chunk_size=1024*1024): # lets use 1 meg chunks
if chunk:
f.write(chunk)
f.flush()
time.sleep(0.05) # 50ms delay won't kill anyone
如果这样做没有帮助,那么您的系统/代码中的问题就比这一部分更严重。可能是您的计算机无法访问该站点,并且因为我认为get()是一个阻塞调用,所以这可能看起来像是冻结的。你能给我们看更多的代码吗?你有任何证据证明你正在访问你试图下载的站点吗?python不是C。你的计算机似乎冻结的原因是因为你有一个非常紧密的循环,没有退出。这是你真正的代码吗?为什么不在执行脚本之前从shell控制你的资源,例如,在linux中,
nice
或cpulimit
可以控制您的资源作为e4c5状态,上面的代码不会退出,所以它可能只会在键盘中断后终止?另请参见以下问题和答案。看起来是你想做的+@zwer的答案是1,但如果你想加快速度,试试这个:可能是你的计算机无法访问该站点,而且因为我认为get()是一个阻塞调用,这可能看起来像是冻结了。你能给我们看更多的代码吗?你有任何证据证明你正在访问你试图下载的站点吗?python不是C。你的计算机似乎冻结的原因是因为你有一个非常紧密的循环,没有退出。这是你真正的代码吗?为什么不在执行脚本之前从shell控制你的资源,例如,在linux中,nice
或cpulimit
可以控制您的资源作为e4c5状态,上面的代码不会退出,所以它可能只会在键盘中断后终止?另请参见以下问题和答案。看起来是你想做的+@zwer的答案是1,但如果您想加快速度,请尝试以下方法: