问题
假设我有 20 个处理器可用。我想将参数传递给
IPython 的外部程序,该程序一次运行 4 个线程最好,并使用 map_async 继续添加作业,直到所有作业完成。下面是示例代码,我相信一次只会为每个作业分配一个进程。这是您将使用“块大小”标志的示例吗?似乎会做相反的事情,即将多个作业发送到一个处理器。
在 IPython 之外启动引擎
ipcluster start -n 20 --daemon
IPython 代码
import ipyparallel as ipp
import subprocess
def func(args):
""" function that calls external prog w/ 4 threads """
subprocess.call([some_external_program, args, nthreads=4])
args = [...]
ipyclient = ipp.Client().load_balanced_view()
results = ipyclient.map_async(func, args)
results.get()