我想我很亲密,但是我想不出正确的方法来迭代输入。这是我的代码的示例:
from multiprocessing import Pool
from functools import partial
from itertools import product
def f(n, x, y):
return print("{} {} {}".format(n, x, y))
n = 3
c = [[1,2,3],[4,5,6]]
d = [[7,8,9],[10,11,12]]
if __name__ == '__main__':
p = Pool(3)
func = partial(f, n)
p.starmap(func, product(zip(c,d), repeat=2))
这是结果:
3 ([1, 2, 3], [7, 8, 9]) ([1, 2, 3], [7, 8, 9])
3 ([1, 2, 3], [7, 8, 9]) ([4, 5, 6], [10, 11, 12])
3 ([4, 5, 6], [10, 11, 12]) ([1, 2, 3], [7, 8, 9])
3 ([4, 5, 6], [10, 11, 12]) ([4, 5, 6], [10, 11, 12])
但是我想要的是
3 ([1, 2, 3], [7, 8, 9])
3 ([1, 2, 3], [10, 11, 12])
3 ([4, 5, 6], [7, 8, 9])
3 ([4, 5, 6], [10, 11, 12])
答案 0 :(得分:2)
您的预期输出只是c
和d
的乘积,因此没有理由zip
或重复。
更改:
p.starmap(func, product(zip(c,d), repeat=2))
收件人:
p.starmap(func, product(c, d))