Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/svg/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python multiprocessing.dummy在windows而不是linux上正常工作_Python_Python Multiprocessing_Pool - Fatal编程技术网

Python multiprocessing.dummy在windows而不是linux上正常工作

Python multiprocessing.dummy在windows而不是linux上正常工作,python,python-multiprocessing,pool,Python,Python Multiprocessing,Pool,我正在编写代码来测试bucket在不同云中的存在性。对于并行执行,我们创建了3个池,并使用imap并行调用和运行这三个池。但一旦一个池完成,它就不会等待另一个池完成,主程序通过执行程序的其余部分来打印结果。这个问题出现在Linux上,但在使用imap()的windows上运行正常 已尝试无序使用map、imap和imap_ from multiprocessing.dummy import Pool def cloud1(bucket_name): some code to fetch

我正在编写代码来测试bucket在不同云中的存在性。对于并行执行,我们创建了3个池,并使用imap并行调用和运行这三个池。但一旦一个池完成,它就不会等待另一个池完成,主程序通过执行程序的其余部分来打印结果。这个问题出现在Linux上,但在使用imap()的windows上运行正常

已尝试无序使用map、imap和imap_

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\u names[]
应该是
bucket\u names=[]
已经更新了代码。谢谢你指出。我明白你想做什么了。对于GNULinux,您实际上可以使用
fork
创建不同的进程,如从os导入fork创建的
。以后谢谢我。您可以在Colab中创建143个进程。但是如果我需要在windows和linux上运行相同的代码,您可以创建一个check变量,为windows分配代码,为linux分配代码。python中有一个名为
plaform
的模块。签出并打印
platform.platform()
。此代码实际运行吗?我发现
bucket\u names[]
应该是
bucket\u names=[]
已经更新了代码。谢谢你指出。我明白你想做什么了。对于GNULinux,您实际上可以使用
fork
创建不同的进程,如从os导入fork
创建的
。以后谢谢我。您可以在Colab中创建143个进程。但是如果我需要在windows和linux上运行相同的代码,您可以创建一个check变量,为windows分配代码,为linux分配代码。python中有一个名为
plaform
的模块。签出并打印
platform.platform()