python多线程下载大文件_如何使用Python 2.7通过HTTP使用多线程下载文件(异步下载)...

1586010002-jmsa.png

I have a file to download (download path extracted from json. eg: http://testsite/abc.zip).

I need a help to perform, all the 5 threads should download the abc.zip file to the output directory and the download has to be Asynchronous or concurrent.

Currently with the below code it does download the file 5 times but it downloads one by one (Synchronous).

What I want is, the download to be simultaneous.

def dldr(file=file_url, outputdir=out1):

local_fn = str(uuid.uuid4())

if not os.path.exists(outputdir):

os.makedirs(outputdir)

s = datetime.now()

urllib.urlretrieve(file, outputdir + os.sep + local_fn)

e = datetime.now()

time_diff = e - s

logger(out1, local_fn, time_diff)

for i in range(1, 6):

t = threading.Thread(target=dldr())

t.start()

I have read Requests with multiple connections post and it's helpful, but doesn't address the requirement of the question asked.

解决方案

I use threading module for download threads:

Also requests, but you can change that to urllib by yourself.

import threading

import requests

def download(link, filelocation):

r = requests.get(link, stream=True)

with open(filelocation, 'wb') as f:

for chunk in r.iter_content(1024):

if chunk:

f.write(chunk)

def createNewDownloadThread(link, filelocation):

download_thread = threading.Thread(target=download, args=(link,filelocation))

download_thread.start()

for i in range(0,5):

file = "C:\\test" + str(i) + ".png"

print file

createNewDownloadThread("http://stackoverflow.com/users/flair/2374517.png", file)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值