跳过主要内容

控制并行性

使用Metaflow远程执行任务几乎太简单了。考虑一个如下定义的foreach循环:

self.params = range(1000)
self.next(self.fanned_out, foreach='params')

当使用 --with batch--with kubernetes 运行时,此代码将启动多达 1000 个并行实例,这可能会变得相当昂贵。

为了防止不小心启动多个并行任务,runresume 命令有一个标志 --max-num-splits,如果尝试启动超过100个分片,任务将失败。 如果您确实需要更多任务,请使用该标志来增加限制。

$ python myflow.py run --max-num-splits 200

另一个标志,--max-workers,限制了并行运行的任务数量。即使一个 foreach 启动了 100 个拆分,--max-workers 也只会使默认情况下只有 16 (默认情况下) 的任务 在任何时候并行运行。如果你想要更多的并行性,增加 --max-workers 的值。

$ python myflow.py run --max-workers 32