如何使用Web界面显示工作者ID和每个任务的时间?

时间:2017-04-26 01:50:30

标签: python parallel-processing distributed dask

我想询问Dask中是否有任何方法可以知道哪个输出来自哪个工作者ID。我特别需要知道这一点来分析我的基准测试结果。我想知道我的任务分配给每个进程的百分比。 我知道可以使用Web界面监控它。但问题是,当处理器数量过多或每个工作人员有大量任务时,很难仅从Web界面获取此信息。对于多处理,我知道我们可以使用Profiler获取此信息;但有没有办法让结果显示使用Web界面到字典或列表? 有没有人有这方面的经验?

1 个答案:

答案 0 :(得分:0)

简答

不,但您可以使用scheduler plugins

实现此目的

长答案

您可以创建一个插件,可以在任务更改状态时执行任务计算,例如日志记录。这是一个简单的插件,可以在完成计算时打印有关任务的大量信息:

class MyPlugin(SchedulerPlugin):
    def transition(self, key, start, finish, *args, **kwargs):
        if start == 'processing' and finish == 'memory':
            print(kwargs)

plugin = MyPlugin()
scheduler.add_plugin(plugin)

您需要一些方法在调度程序上运行此代码。一种简单的方法是使用client.run_on_scheduler方法:

def f(dask_scheduler):
    plugin = MyPlugin()
    dask_scheduler.add_plugin(plugin)

client.run_on_scheduler(f)

当然,您可能希望做一些比打印更复杂的事情,但希望这能让您走上正确的轨道。