我有一个文件夹,里面有很多.sh脚本。如何使用已经设置好的dask分布式集群并行运行它们?
目前,我正在做以下工作:
import dask, distributed, os
# list with shell commands that I want to run
commands = ['./script1.sh', './script2.sh', './script3.sh']
# delayed function used to execute a command on a worker
run_func = dask.delayed(os.system)
# connect to cluster
c = distributed.Client('my_server:8786')
# submit job
futures = c.compute( [run_func(c) for c in commands])
# keep connection alive, do not exit python
import time
while True:
time.sleep(1)但是,对于这种情况,如果客户端可以断开连接而不导致调度程序取消作业,这将是理想的。我正在寻找一种不需要活动客户端连接的计算我的任务的方法。这是怎么做到的呢?
发布于 2018-04-07 19:50:55
你看到forget了吗?这将是一种确保某些任务在客户端离开后在集群上运行的方法。
还要注意的是,您有像wait()甚至gather()这样的函数,所以您不需要睡眠--永远循环。
不过,通常情况下,subprocess.Popen将启动子进程,而不是等待它完成,因此您甚至不需要来自dask的任何复杂的信息,因为它似乎对调用的任何输出不感兴趣。
https://stackoverflow.com/questions/49551759
复制相似问题