【发布时间】:2019-08-21 05:22:57
【问题描述】:
如何并行重复运行一个函数?
例如,我有一个不带参数且具有随机元素的函数。我想多次运行它,下面使用for 循环进行说明。请问我该如何并行完成?
import numpy as np
def f():
x = np.random.uniform()
return x*x
np.random.seed(1)
a = []
for i in range(10):
a.append(f())
这是parallel-python-just-run-function-n-times 的副本,但是,答案不太合适,因为它将不同的输入传递给函数,How do I parallelize a simple Python loop? 还提供了将不同参数传递给函数而不是重复相同调用的示例.
我在 Windows 10 上并使用 Jupyter
关于我的实际用途:
每次调用是否会产生大量输出?
循环的每次迭代都会产生一个数字。您需要保留输出吗?每次调用大概需要多长时间?
是的,我需要保留这些数字,每次迭代大约需要 30 分钟。?您总共需要运行多少次?
至少 100 个。您想跨多台机器并行化还是仅跨多个内核并行化?
目前只是跨多个内核。
【问题讨论】:
-
每次调用是否产生大量输出?你需要保留输出吗?每次调用大约需要多长时间?您总共需要运行多少次?您是要跨多台机器并行化还是只需要多核并行化?
-
嗨@MarkSetchell;我已经编辑了更多细节。谢谢
-
是否涉及IO操作?计算量大吗?
-
嗨@Marat;不,没有 IO 开销,也没有大的内存需求。这是一个优化/调度任务。
-
仍然,计算量大吗?重要的是要知道区分线程池和进程池,并了解其中有多少可以并行执行。
标签: python parallel-processing