多处理:转义join()

时间:2017-06-21 16:33:31

标签: python multiprocessing

我在一组文件上执行并行操作,基本功能是:

def funcOnFile(fileName):
    print('Executing ', fileName)
    readFile
    ....
    saveOutputFile

由于每个文件都独立于其他文件,因此我可以轻松地并行执行此操作,而无需让线程相互通信。 但是我必须确保始终保持至少一个核心免费,否则我的旧计算机将冻结并死亡

我的工作是:

from multiprocessing import Process

for i in range(0, len(filenames), numProcesses):
       processes = []
       for j in range(numProcesses):
           index = i + j
           if index >= len(filenames):
               break

           filename = filenames[index]
           process = multiprocessing.Process(
               name=os.path.basename(filename),
               target=func, args=(filename, args)
           )
           processes.append(process)
           process.start()

       for p in processes:
           p.join()

在此过程结束时,我想将文件同步到我的s3远程存储库,我使用subprocess执行此操作:

subprocess.run(['aws', 's3', 'sync', localOuputs, s3Output])

但是,在最后一个文件保存之前,同步开始了! 有没有人对此有解释/解决方法?我认为join()

可以避免这种情况

0 个答案:

没有答案