(* toy example *)
myfun[x_, y_: 0] := Block[
{ans, myplot, summary},
Print["The first value is ", x];
Print["The second value is ", y];
Print["Their sum is ", x + y];
summary = {#1, "=", #2} & @@@
Transpose[{{"x", "y"}, Round[{x, y}, 0.001]}];
Print[Grid[summary, Alignment -> {Left, Right, Center}]];
myplot = Plot[Sin[z], {z, -10, x}];
Print[myplot];
];
myfun[1, 2]
Runs fine.
But I want to do Parallel computing, like this
Parallelize[
{myfun[1, 2],
myfun[1, 4],
myfun[2, 5]
}
]
Then the output becomes this:

Which does not make any sense.
How would I change the code, so that the output keeps in the same order (for each call of myfun), but executes each of the function calls still run in Parallel?
Update:
So if I want to avoid using Print, I tried a bit like this:
myfun[x_, y_: 0] := Block[{ans, myplot, summary, res},
Reap[
Sow[Print["The first value is ", x], res],
Sow[Print["The second value is ", y], res],
Sow[Print["Their sum is ", x + y], res]
];
summary = {#1, "=", #2} & @@@
Transpose[{{"x", "y"}, Round[{x, y}, 0.001]}];
Reap[
Sow[Grid[summary, Alignment -> {Left, Right, Center}], res]
];
myplot = Plot[Sin[z], {z, -10, x}, ImageSize -> Medium];
Reap[Sow[myplot, res]][[2]]
];
So Reap collects all the res term? I dont think I fully understand how this works in a bit piece of code.
Thanks!

Printalltogether and group all relevant returns for a function call in oneGrid. – Yves Klett Dec 03 '14 at 13:00