multiprocessing.dummy правильно работает в Windows, а не в Linux

Я пишу код для проверки наличия ведра в разных облаках. Для параллельного выполнения создали 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.


person ItsDg4u    schedule 05.07.2019    source источник
comment
этот код действительно работает? Я обнаружил, что bucket_names[] должно быть bucket_names=[]   -  person MEdwin    schedule 05.07.2019
comment
Обновили код. Спасибо, что указали на это.   -  person ItsDg4u    schedule 05.07.2019
comment
Я вижу, что вы пытаетесь сделать. В GNU Linux вы можете использовать fork для создания различных процессов, как в from os import fork. Поблагодаришь меня позже. В Colab можно создать 143 процесса.   -  person MEdwin    schedule 05.07.2019
comment
Но что, если мне нужно, чтобы один и тот же код работал как в Windows, так и в Linux?   -  person ItsDg4u    schedule 05.07.2019
comment
вы можете создать проверочную переменную для назначения кода для Windows и одну для Linux. В питоне есть модуль под названием plaform. Проверьте и распечатайте platform.platform().   -  person MEdwin    schedule 08.07.2019
comment
Эй, я не могу найти способ, как я могу использовать форк в приведенном выше коде, можете ли вы привести мне какой-нибудь пример.   -  person ItsDg4u    schedule 17.07.2019
comment
найдите здесь хорошие примеры: stackoverflow.com/questions/33560802/pythonhow-os -форк-работы   -  person MEdwin    schedule 17.07.2019