通过 dask 在 python 脚本中进行任务管理和监控

Tasks management and monitoring within python script via dask

我有一个包含许多子文件夹(例如 100 个)的项目文件夹。 python 脚本导航到这些子文件夹中的每一个,调用可执行文件,将结果写入输出文件并移动到下一个子文件夹。

这是我的 python 脚本

from dask_jobqueue import PBSCluster   
cluster = PBSCluster()
cluster.scale(jobs=3)  

from dask.distributed import Client
client = Client(cluster)
...

r_path='/path/to/project/folder'


def func():
    f = open('out', 'w')
   (subprocess.call(["/path/to/executable/file"], stdout=f))

for root, dirs, files in os.walk("."):
    for name in dirs:
        os.chdir(r_path+'/'+str(name))
        func()

项目中,

  1. out 文件需要用于进一步的计算,因此脚本需要知道给定子文件夹的执行何时完成
  2. 可执行文件在任何给定时间都需要限制在 10 个子文件夹中,并且在这 10 个执行完成后,需要在另一个子文件夹中启动一个新文件。

有人可以告诉我是否可以使用 dask 来做这个吗?

是的,可以使用 Dask 来执行此操作。您可能想阅读有关 Dask delayed 或 Dask futures 的文档。

https://docs.dask.org/en/latest/delayed.html

https://docs.dask.org/en/latest/futures.html