Я пишу код для проверки наличия ведра в разных облаках. Для параллельного выполнения создали 3 пула и с помощью imap вызывали и запускали все три параллельно. Но как только один пул завершен, он не ждет завершения другого пула, и основная программа печатает результат, выполняя оставшуюся часть программы. Проблема возникает только в Linux. Она отлично работает для Windows, используя imap().
Пробовали использовать карты, 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.
bucket_names[]
должно бытьbucket_names=[]
- person MEdwin   schedule 05.07.2019fork
для создания различных процессов, как вfrom os import fork
. Поблагодаришь меня позже. В Colab можно создать 143 процесса. - person MEdwin   schedule 05.07.2019plaform
. Проверьте и распечатайтеplatform.platform()
. - person MEdwin   schedule 08.07.2019