Увеличение скорости передачи файла AWS S3 в Google Cloud Storage - PullRequest
0 голосов
/ 23 апреля 2019

Попытка загрузить огромный набор данных из amazon s3.Размер файла составляет около 500 гигабайт, и у меня есть скрипт Python для загрузки его на мою виртуальную машину GCP.Однако начальная скорость загрузки составляет около 30-50 Мбит / с, а затем она падает до 1 Мбит / с.Есть ли способ увеличить скорость загрузки?

from tqdm.auto import tqdm
import requests
import errno
import tarfile
import os

def download(url, save_dir):
    filename = url.rsplit('/', 1)[1]

    if not os.path.exists(os.path.dirname(save_dir)):
        try:
            os.makedirs(save_dir)
        except OSError as exc:
            if exc.errno != errno.EEXIST:
                raise

    with open(f'{save_dir}/{filename}', 'wb+') as f:
        response = requests.get(url, stream=True)
        total = int(response.headers.get('content-length'))

        if total is None:
            f.write(response.content)
        else:
            with tqdm(total=total, unit='B', unit_scale=True, desc=filename) as pbar:
                for data in tqdm(response.iter_content(chunk_size=1024)):
                    f.write(data)
                    pbar.update(1024)


TRAIN_CSV = 'https://s3.amazonaws.com/google-landmark/metadata/train.csv'
TRAIN_ATTRIBUTION_CSV = 'https://s3.amazonaws.com/google-landmark/metadata/train_attribution.csv'
TAR_URLS = [f'https://s3.amazonaws.com/google-landmark/train/images_{ ("00" + str(n))[-3:] }.tar' for n in range(0,500)]

SAVE_DIR = 'train'
NUM_TARS_TO_DL = 1
UNTAR = False

print('DOWNLOADING train.csv')
download(TRAIN_CSV, SAVE_DIR)

print('\nDOWNLOADING train_attribution.csv')
download(TRAIN_ATTRIBUTION_CSV, SAVE_DIR)

print('\nDOWNLOADING image tar files')
for url in tqdm(TAR_URLS[:NUM_TARS_TO_DL]):
    download(url, SAVE_DIR)

if UNTAR:
    print('\n UNTARRING image tar files')
    for filename in tqdm(os.listdir(SAVE_DIR)):
        if filename.endswith('.tar'):
            img_tar = tarfile.open(f'{SAVE_DIR}/{filename}')
            img_tar.extractall(path=SAVE_DIR)

1 Ответ

0 голосов
/ 23 апреля 2019

Я понял, что если я использую многоядерный пакет pythons и использую каждое ядро ​​для загрузки, это значительно увеличивает время загрузки.

...