Obviously, this one is a good option for relu:
def complex_relu5(complex_input):
    return torch.clamp(complex_input,min = 0)

31.6 µs ± 1.7 ns per loop (mean ± std. dev. of 7 runs, 10000 loops each)
Still, for other types of functions, I would still need to slice/stack real and imaginary part.