使用相同的参数运行相同的函数10次并获得结果

时间:2015-02-09 23:41:38

标签: python multithreading concurrency multiprocessing

我正在寻找使用相同参数运行10次相同函数的最智能方法并存储结果。

直截了当的解决方案是:

def f(a):
    // do stuff
    return a

results = []
same_argument = 10

for x in range(0,10):
    results.append(f(same_argument))

这有效但我相信如果10个进程可以同时运行,那么这个过程将花费更少的时间。

The multi-process map function似乎可以完成这项工作,但它只需要一个可迭代的参数。我可以把相同参数的10次列表传递给它,但感觉不对。

是否还有其他内置方法可以解决我的问题?

2 个答案:

答案 0 :(得分:7)

我只是使用pool并多次传递相同的参数......

n_times = 10
results = pool.map(f, [same_argument] * n_times)

速度快,很容易分辨出发生了什么。唯一的缺点是它需要一点中间存储 - 与保存实际结果所需的存储量相比,这可能是微不足道的。

当然,如果你真的担心存储开销,你应该可以使用itertools.repeat(same_argument, n_times) ......

答案 1 :(得分:0)

列表理解怎么样?

results = [f(same_argument) for _ in xrange(10)]

" _"用于制作语法验证工具(如pylint)而不是抱怨未使用的变量。