Python2:使用具有多个参数的worker池进行多处理

2024-04-25 21:56:14 发布

您现在位置:Python中文网/ 问答频道 /正文

我想尝试在python-2.x中使用multiprocessing.Pool进行并行计算。你知道吗

我想出了以下简单的代码。 不幸的是,我无法生成任何错误消息。你知道吗

有人能给我指出代码可能出错的正确方向吗?你知道吗

import numpy as np
import multiprocessing as mp
import timeit

def fun(i,j):
    return i+j

num=2

num_cores = mp.cpu_count()
p = mp.Pool(num_cores)

results = np.array([])
tasks = np.array([(i, j) for i in range(0,num) for j in range(0, num)])

if __name__ == '__main__':
    results = np.array(p.map(fun,tasks))
    print results

Tags: 代码inimportforasnpmpmultiprocessing
1条回答
网友
1楼 · 发布于 2024-04-25 21:56:14

这里的主要问题是,要作为参数传递给worker的元组被包装在numpy.ndarray中,因此它只是一个参数,因为numpy.ndarray没有展开。你知道吗


这应该适合您:

from __future__ import print_function
import numpy as np
import multiprocessing as mp
import timeit

def fun(ij):
    s = sum(ij)
    print('{0} + {1} = {2}'.format(ij[0], ij[1], s))
    return s

num=2

num_cores = mp.cpu_count()
p = mp.Pool(num_cores)

results = np.array([])
tasks = np.array([(i, j) for i in range(0,num) for j in range(0, num)])

if __name__ == '__main__':
    results = np.array(p.map(fun,tasks))
    print(results)

此脚本的输出为:

0 + 0 = 0
0 + 1 = 1
1 + 0 = 1
1 + 1 = 2
[0 1 1 2]

我添加了from __future__ import print_function语句,请参见here它的好处。和here is the according PEP 3105 Make print a function。你知道吗


最后一点:可以从用户senderle here找到一个更全面的解决方案。你知道吗

相关问题 更多 >

    热门问题