Я пишу код для проверки существования корзины в разных облаках.Для параллельного выполнения создали 3 пула и с помощью imap вызывали и запускали все три параллельно.Но как только один пул завершен, он не ожидает завершения другого пула, и основная программа печатает результат, выполняя оставшуюся часть программы.Проблема возникает только в Linux. Он работает нормально для окон, использующих imap ()
. Попытался использовать map, 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.