A minor comment : from the documentation of Singular it seems that the output Gröbner basis will be computed with respect to the monomial ordering of the base ring. So for the specific code snippet given above with the ring constructed as "Kx.<x,y>=QQ[]", I would expect step 3 (the actual change of ordering / FGLM step) to target the degrevlex ordering, since it is the one used by default when creating the polynomial ring. For this piece of code with degrevlex ordering, the point of step 3 -- or of trying to use FGLM at all -- is then not very clear since the first step is to use another algorithm (not FGLM) to compute the degrevlex basis, furthermore this other algorithm would likely not require that the ideal be zero-dimensional.
However using FGLM is indeed a good approach in the situation highlighted by Oscar, when the target order is the lex order:
sage: Kx = PolynomialRing(GF(9001), 5, 'x', order="lex")
sage: I = Kx.ideal([Kx.random_element(3) for k in range(5)])
sage: %time gb = I.groebner_basis(algorithm='singular:stdfglm')
CPU times: user 6.24 ms, sys: 10 ms, total: 16.3 ms
Wall time: 71.7 ms
sage: %time gb = I.groebner_basis()
CPU times: user 505 ms, sys: 1.04 ms, total: 506 ms
Wall time: 504 ms