python - 如何使用 Python 快速下载 Tar 文件、解压缩并将内容上传到 Azure 块存储?
问题描述
我有以下在 Jupyter Notebook 中运行的 Python 代码。它从源位置下载tar
文件,解压缩并上传到 Azure Blob 存储。
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
占用 1Gb,相当于大约 4Gb 的未压缩数据。问题是即使对于相对较小的数据量,运行此代码也需要很长时间。大约需要5-6个小时。
我究竟做错了什么?有什么方法可以优化我的代码以更快地运行它?
解决方案
推荐阅读
- java - 我不知道为什么我的按钮列表顶部有一个确定按钮
- javascript - 转换日期时,我得到前一天
- python-3.x - 我需要检测给定列表中的周数和月数
- apache - 无法在 Linode 服务器上设置子域
- delphi - 为什么在一种情况下需要静态而在另一种情况下不是强制性的?
- javascript - 如何识别我的项目中安装或未安装的 npm 包
- git - Git 命令等效于 Clearcase 命令?
- html - 我使用的是 flexbox 对吗?似乎无法让垂直对齐工作 - 其他线程似乎没有答案
- python - 导出 FastAI 文本分类器模型时出错
- angular - 如何过滤掉对象内部数组字段中的字段?