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次列表,但感觉不对.
是否还有其他内置方法可以解决我的问题?
我只是使用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)......
| 归档时间: |
|
| 查看次数: |
128 次 |
| 最近记录: |