我正在编写代码以测试不同云中存储桶的存在。对于并行执行,创建了3个池,并使用imap并行调用和运行所有三个池。但是一旦一个池完成,它就不会等待其他池完成,并且主程序通过执行程序的其余部分来打印结果。该问题仅在Linux上出现。使用imap()在Windows上运行正常
尝试使用地图,imap和imap_unordered。
from multiprocessing.dummy import Pool
def cloud1(bucket_name):
some code to fetch respective details
return
def cloud2(bucket_name):
some code to fetch respective details
return
def cloud3(bucket_name):
some code to fetch respective details
return
bucket_names = ["bucket1","bucket2","bucket3"] # A list to store Bucket names
#Calling all function using pool
p1=Pool(15)
p2=Pool(15)
p3=Pool(50)
results1=p1.imap(cloud1, bucket_names)
results2=p2.imap(cloud2, bucket_names)
results3=p3.imap(cloud3, bucket_names)
p1.close()
p1.join()
p2.close()
p2.join()
p3.close()
p3.join()
#Printing output
print(results1)
print(results2)
print(results3)
代码应等待每个池完成执行,然后像在Windows中一样打印输出。