通过 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()
项目中,
- out 文件需要用于进一步的计算,因此脚本需要知道给定子文件夹的执行何时完成
- 可执行文件在任何给定时间都需要限制在 10 个子文件夹中,并且在这 10 个执行完成后,需要在另一个子文件夹中启动一个新文件。
有人可以告诉我是否可以使用 dask 来做这个吗?
是的,可以使用 Dask 来执行此操作。您可能想阅读有关 Dask delayed 或 Dask futures 的文档。
我有一个包含许多子文件夹(例如 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()
项目中,
- out 文件需要用于进一步的计算,因此脚本需要知道给定子文件夹的执行何时完成
- 可执行文件在任何给定时间都需要限制在 10 个子文件夹中,并且在这 10 个执行完成后,需要在另一个子文件夹中启动一个新文件。
有人可以告诉我是否可以使用 dask 来做这个吗?
是的,可以使用 Dask 来执行此操作。您可能想阅读有关 Dask delayed 或 Dask futures 的文档。