为并行处理分开打印



我使用pathos.multiprocessing在并行进程中运行函数,每个进程使用不同的输入参数。下面是一个最小的工作示例:

import pathos.multiprocessing as mp
from time import sleep
def my_func(x, y):
for i in range(x):
print(y+i)
sleep(.2)
return i + y
seq = [(100, 4), (100, 5)]
processes = 2
print ("Multiprocessing...")
pool = mp.Pool(processes)
resultsObj = pool.starmap_async(my_func, seq )          
pool.close()
results = resultsObj.get()

正如预期的那样,两个进程的输出结果混合在一起,如下所示:

Multiprocessing...
4
5
5
6
7
6
7
8
8
9
10
9
10
11

是否有一种方法可以将结果驱动到2个不同的终端来观看进度?或者以任何其他方式将结果打印在"每个进程"中。时尚吗?

我是pathosmultiprocess的作者。分割输出的一种方法是组成一个嵌套映射。本质上,如果您有一个将输入管道传输到终端的函数,那么使用pathos.pools.ThreadPoolmap以线程并行的方式将打印到两个不同的终端。由于您只处理两个进程,因此您可以只包含函数来将输出分割到上面使用的映射函数中的不同终端。如果您只是想知道每个输出来自哪个进程,您可以交替使用multiprocess.process.current_process()os.getpid()

相关内容

  • 没有找到相关文章

最新更新