首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用Python快速下载Tar文件、解压它并将内容上传到Azure Block存储?

如何使用Python快速下载Tar文件、解压它并将内容上传到Azure Block存储?
EN

Stack Overflow用户
提问于 2021-01-08 22:18:08
回答 1查看 223关注 0票数 0

我有以下在Jupyter Notebook中运行的Python代码。它从源位置下载一个tar文件,将其解压缩并上传到Azure Blob存储。

代码语言:javascript
复制
import os
import tarfile
from azure.storage.blob import BlobClient

def upload_folder(local_path):
    connection_string = "XXX"
    container_name = "mycontainername"
    
    with tarfile.open(local_path, "r") as file:
        for each in file.getnames():
            print(each)
            file.extract(each)          
            blob = BlobClient.from_connection_string(connection_string,
                                                     container_name=container_name,
                                                     blob_name=each)

            with open(each, "rb") as f:
                blob.upload_blob(f, overwrite=True)
            os.remove(each)


# MAIN
!wget https://path/to/myarchive.tar.gz

local_path = "myarchive.tar.gz"

upload_folder(local_path)

!rm -rf myarchive.tar.gz
!rm -rf myarchive

myarchive.tar.gz占用1 4Gb,相当于大约4 4Gb的未压缩数据。问题是,即使对于这么小的数据量,运行这段代码也需要太长时间。大约需要5-6个小时。

我做错了什么?有没有办法优化我的代码,让它运行得更快?

EN

回答 1

Stack Overflow用户

发布于 2021-01-11 12:16:09

您可以将上传文件作为一个任务进行处理,并使用multiprocessing创建一些进程池。然后,我们可以使用池一次运行一些任务,以提高脚本的速度。有关更多详细信息,请参阅herehere

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65630687

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档