我正在寻找使用相同参数运行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次列表传递给它,但感觉不对。
是否还有其他内置方法可以解决我的问题?
答案 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)而不是抱怨未使用的变量。