Запуск для l oop параллельно (указать c) - PullRequest
0 голосов
/ 11 февраля 2020

Я пишу систему, которая в основном загружает некоторые данные в облако. Эти данные состоят из двух частей.

  1. raw_data - весь каталог
  2. config - соответствующий файл csv

Как только я загружаю raw_data (локальный компьютер в облако Хранилище), я извлекаю соответствующую конфигурацию для этого запуска (с моего локального компьютера) и загружаю ее в облачное хранилище.

Проблема в том, что иногда raw_data доступна, но конфигурация задерживается.

Как только я загружаю raw_data и проверяю, доступен ли конфиг, я использую следующую логику c:

У меня есть dict, my_runs

print(my_runs) дает {'k1': 'val1', 'k2': 'val2', 'k3': 'val3'}

Где k1, k2, k3: run1, run2, run3 и val1, val2, val3: location1, location2, location3.

Я делаю для l oop более my_runs

csv_exists = False
attempts = 0
for run,loc in my_runs.items():
    while not csv_exists:
        if os.path.isdir(loc):
            upload_to_cloud()
        elif not os.path.isdir(loc) and attempts == 2:
            email_me()
            attempts += 1
            sleep(1800)
        else:
            attempts+=1
            sleep(1800)

Как видите, если csv недоступен, я сплю два раза по 30 минут каждый, затем отправляю электронное письмо, затем продолжаю спать (так как конвейер задерживается, пока у меня не будет конфигурации. csv)

Проблема здесь в том, что если я на run1, смотрю в location1 и нахожусь в тупике до location1 заполнено, run2 и run3 также ждут без проверки наличия конфигурации.

Как я могу изменить этот код, чтобы запустить его для -l oop как многопроцессорный , чтобы я мог одновременно проверить файлы конфигурации во всех местах? Загрузите доступные элементы и подождите, пока нет?

Я не могу понять, как реализовать multiprocessing или concurrent.features в a для l oop.

Любая помощь или руководство будет высоко ценится!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...