我在一组文件上执行并行操作,基本功能是:
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()