运行 相同参数的相同函数10次并得到结果

Run the same function with the same arguments 10 times and get results

我正在寻找最聪明的方法 运行 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 倍的列表传递给它,但感觉不对。

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

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

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

速度很快,而且很容易判断发生了什么。唯一的缺点是它需要一点中间存储——与保存实际结果所需的存储量相比,这可能可以忽略不计。

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

列表理解呢?

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

其中“_”用于使语法验证工具(如 pylint)不会抱怨未使用的变量。