微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用 Python 同时下载文件的最佳方法?

如何解决使用 Python 同时下载文件的最佳方法?

我正在尝试使用 Python get 模块同时发送 requests 请求。

在寻找解决方案时,我遇到了许多不同的方法包括 grequestsgevent.monkeyrequests futuresthreadingmulti-processing.. .

关于速度和代码可读性,我有点不知所措,不知道该选择哪一个

任务是尽可能快地从同一服务器下载

解决方法

我会使用线程,因为没有必要像多处理那样在多核上运行下载。
所以写一个包含 requests.get() 的函数,然后作为一个线程启动。

但请记住,您的互联网连接必须足够快,否则将不值得。

,
def download(webpage):
    requests.get(webpage)
    # Whatever else you need to do to download your resource,put it in here

urls = ['https://www.example.com','https://www.google.com','https://yahoo.com'] # Populate with resources you wish to download
threads = {}

if __name__ == '__main__':
    for i in urls:
        print(i)
        threads[i] = threading.Thread(target=download,args=(i,))
    for i in threads:
        threads[i].start()
    for i in threads:
        threads[i].join()
    print('successfully done.')

上面的代码包含一个名为 download 的函数,它代表您必须运行以下载您要下载的资源的任何代码。然后用您希望下载的 url 填充一个列表 - 随意更改这些值。这被组装到包含线程的第二个字典中。这样您就可以根据需要在 url 字典中拥有任意数量的 url,并为每个 url 创建一个单独的线程。每个线程都启动,然后加入。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。