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

侯赛因

我有一个文件要下载(从json中提取下载路径,例如:)http://testsite/abc.zip

我需要执行帮助,所有5个线程都应将abc.zip文件下载到输出目录,并且下载必须是异步并发的

当前使用以下代码,它确实可以下载文件5次,但可以一次下载一个(同步)。

我想要的是下载是同时进行的。

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()

我已经阅读了具有多个连接请求帖子,它很有帮助,但没有解决所问问题的要求。

卡瓦基索

我将线程模块用于下载线程:
也可以请求,但是您可以自己将其更改为urllib。

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)

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用Winsock2通过SOCKS5下载HTTP网站

来自分类Dev

在python中使用多线程下载文件

来自分类Dev

使用多线程在Java中下载文件

来自分类Dev

使用多线程在Java中下载文件

来自分类Dev

如何使用Retrofit2下载文件?

来自分类Dev

使用异步Task <IHttpActionResult>的Web API 2下载文件

来自分类Dev

如何使用Vala通过HTTP下载文件?

来自分类Dev

使用Python通过Internet下载文件

来自分类Dev

使用Python通过SSH下载文件

来自分类Dev

如何使用C从http下载文件?

来自分类Dev

python中的多处理/多线程下载文件

来自分类Dev

python中的多处理/多线程下载文件

来自分类Dev

使用urllib2和/或wget自动下载文件

来自分类Dev

使用Retrofit 2的内存不足下载文件

来自分类Dev

在提示下使用Struts2下载文件

来自分类Dev

Yi2 使用 SendFile() 下载文件

来自分类Dev

如何通过HTTP下载文件?

来自分类Dev

多线程文件传输/使用javascript下载

来自分类Dev

我如何使用python 3通过基本身份验证下载Teamcity工件

来自分类Dev

使用struts2和Ajax下载文件时如何放置进度栏

来自分类Dev

使用启用了2要素身份验证的python脚本从nextcloud下载文件

来自分类Dev

如何使用GEB通过表单提交下载文件

来自分类Dev

如何使用Selenium Webdriver通过URL列表下载文件

来自分类Dev

如何使用node.js和http下载文件?

来自分类Dev

如何使用http post Node.js下载文件

来自分类Dev

如何使用 tqdm 使用 Python 下载文件

来自分类Dev

使用多个线程使用JSch下载文件

来自分类Dev

使用ASP.Net WebAPI 2通过HTTP传输原始字节

来自分类Dev

使用ASP.Net WebAPI 2通过HTTP传输原始字节