如何在ray中打印出哪个worker执行了什么功能而不是在仪表板上查找?

问题描述

我能够在 ray 仪表板上看到哪些功能被分配给了哪个工作人员。是否可以打印出哪个工作人员执行了哪个功能而不是在仪表板上查找?

代码示例:

@ray.remote
def mul1(x):
    return x*x

@ray.remote
def mul2(y):
    return y*y

@ray.remote
def add(x,y):
    return x+y

futures = add.remote(mul1.remote(2),mul2.remote(3))
ray.get(futures)

enter image description here

enter image description here

期望输出

PID: 2838 - mul2()
PID: 2848 - black()
PID: 2838 - add()

解决方法

我完全没有使用 ray 的经验,但是从纯 python 方面你可以编写一个简单的装饰器:

def print_name(func):
    @wraps(func)
    def deco(*args,**kwargs):
        print(func.__name__)
        return func(*args,**kwargs)
    return deco

把它放在@ray.remote

使用示例:

@ray.remote
@print_name
def my_func():
    pass