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

Jui*_*icy 1 python concurrency multithreading multiprocessing

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

直截了当的解决方案是:

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

results = []
same_argument = 10

for x in range(0,10):
    results.append(f(same_argument))
Run Code Online (Sandbox Code Playgroud)

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

多进程map函数似乎可以完成这项工作,但它只需要一个可迭代的参数.我可以传递一个相同参数的10次列表,但感觉不对.

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

mgi*_*son 7

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

n_times = 10
results = pool.map(f, [same_argument] * n_times)
Run Code Online (Sandbox Code Playgroud)

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

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