Python 并行运行for循环(特定)

Python 并行运行for循环(特定),python,python-3.x,for-loop,multiprocessing,Python,Python 3.x,For Loop,Multiprocessing,我正在编写一个系统,基本上可以将一些数据上传到云端。该数据由两部分组成 原始数据-整个目录 配置相关csv文件 一旦我上传了原始数据(本地机器到云存储),我就从本地机器获取运行的相关配置,并将其上传到云存储 问题是,有时原始数据可用,但配置延迟 上传原始数据并检查配置是否可用后,我使用以下逻辑: 我有一个dict,我的_运行 csv_exists = False attempts = 0 for run,loc in my_runs.items(): while not csv_exis

我正在编写一个系统,基本上可以将一些数据上传到云端。该数据由两部分组成

  • 原始数据-整个目录
  • 配置相关csv文件
  • 一旦我上传了原始数据(本地机器到云存储),我就从本地机器获取运行的相关配置,并将其上传到云存储

    问题是,有时原始数据可用,但配置延迟

    上传原始数据并检查配置是否可用后,我使用以下逻辑:

    我有一个dict,
    我的_运行

    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)
    
    print(my_runs)
    给出
    {'k1':'val1','k2':'val2','k3':'val3'}

    其中k1,k2,k3:run1,run2,run3 和val1,val2,val3:location1,location2,location3

    我在
    我的\u运行时执行for循环

    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分钟,然后给自己发电子邮件,然后继续睡觉(因为管道会一直保持到我有了config.csv)

    这里的问题是,如果我在
    run1
    上查看
    location1
    ,并且在
    location1
    填充之前处于死锁状态,
    run2
    run3
    也在等待,而不检查配置是否存在

    如何更改此代码,以便将此for循环作为多进程运行,以便同时检查所有位置的配置文件?上传可用的ONCE,然后等待不可用的ONCE

    我不明白如何在for循环中实现
    多处理
    并发特性


    任何帮助或指导都将不胜感激

    在这里,多处理比线程更好/更合适吗?这就是我要寻找的答案。目前正试图通过将其提取为函数并使用
    concurrent.features