我是dask.jobqueue的新用户,由于这个,我正试图安排任务。
要启动的任务数量可能有所不同(从几十个到几百个),并且这些任务之间的依赖关系图可能非常复杂。而且,这些任务中每一项的资源需求都可能有很大差异,因为有些任务将是高度多线程的,而另一些则不会。但是,我不认为目前可以动态改变“工人”的资源。
例如代码片段:
@dask.delayed()
def first_task(...)
"""mono thread task
"""
...
@dask.delayed()
def second_task(...)
"""higly multithreaded task
"""
...
cluster = PBSCluster(...)
cluster.scale(...) # or cluster.adapt(...)
client = Client(cluster)
first_return = first_task()# mono thread
second_return = second_task(first_return) # threaded
third_task(second_return) # highly multitraded
# launch tasks
third_task.compute()
由于.compute()可以触发处理,该处理可以接受命名参数'resources',但据我了解(https://distributed.dask.org/en/latest/resources.html)对应于先前在创建集群时通知给每个工作人员的资源,这不对应于我正在寻找的每个工作人员的资源动态管理。
基本上,可以从:切换到>
third_task.compute(resources={...})
与要处理的每个任务更相关的事物?附加每个dask.delayed所需的资源吗?
@dask.delayed(resources={"cpu":1, "ram": "5GB"}) def first_task(...) ... @dask.delayed(resources={"cpu":24, "ram": "120GB"}) def third_task(...) ... third_task.compute()
谢谢,
我是dask.jobqueue的新用户,由于这个原因,我正尝试安排任务。启动的任务数量可以变化(从几十个到几百个不等),并且这些任务之间的依赖关系图...
截至2020-03-27答案为否