我想询问Dask中是否有任何方法可以知道哪个输出来自哪个工作者ID。我特别需要知道这一点来分析我的基准测试结果。我想知道我的任务分配给每个进程的百分比。 我知道可以使用Web界面监控它。但问题是,当处理器数量过多或每个工作人员有大量任务时,很难仅从Web界面获取此信息。对于多处理,我知道我们可以使用Profiler获取此信息;但有没有办法让结果显示使用Web界面到字典或列表? 有没有人有这方面的经验?
答案 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)
当然,您可能希望做一些比打印更复杂的事情,但希望这能让您走上正确的轨道。