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

标签 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 次相同参数的列表,但感觉不对。

是否有任何其他内置方法来处理我的问题?

最佳答案

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

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

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

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

关于python - 使用相同的参数运行相同的函数 10 次并获得结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28421605/

相关文章:

python - 根据单列的值将值添加到数据框列

python - 我应该用 Python 命名我的全局模块?

java - 在Java中确认来自不同线程的rabbitMq消息

java - 如果在 Java 中不同步,一个线程更新的变量的值最终会被另一个线程看到吗?

python - 如何禁用标准错误流的日志记录?

c# - 语言间的方法差异(Python->C#)

java - 在android中快速下载HTML的方法?

c# - 编写 C# TSR 的公认方法是什么?

java - Spring data mongodb并发获取和更新是线程安全的吗?

c++ - 自旋锁定堆栈和内存屏障 (C++)