在这种情况下如何在Python中使用多处理?

时间:2016-12-21 20:36:35

标签: python multithreading python-2.7 python-3.x multiprocessing

我尝试使用简单的方法进行多重处理:

urls = [1, 2, 3, 4]
p = Pool(2)
p.map(open, urls)

其中open()是函数,它进行计算。

def open(url):
    print(url)

当我print(url)时,它会返回奇怪的结果:

1
2
3
4
1
2
3
4

我可以假设每个进程Pool(2)都处理相同的计算错误。

我需要处理1处理[1, 2]进行处理,处理2处理[3, 4]

1 个答案:

答案 0 :(得分:0)

我认为这应该做你想做的事:

import multiprocessing
def func(x):
    return x[0] + x[1]

if __name__ == "__main__":    
    p = multiprocessing.Pool(2)
    for x in p.map(func, [(1, 2), (3, 4)]):
        print(x)

输出:

 3
 7