The original motivation was that cloning will remove a bunch of arrays that may be present on the object (for instance weight vectors that have been learning from the data). Thus cloning before the loop, or at least in the parent process, is lighter for the memory. Cloning in the function can mean that, in the context of parallel computing, the heavy data gets pickled and unpickled before the cloning.

I think that I prefer cloning outside the loop. Here it actually means cloning in the function that calls "fit_grid_point" here.

However, looking at this refactoring, it seems to me that it should be possible to merge "fit_grid_point" and the function that is currently called "_cross_val_score". It seems that the only difference is a bit of verbosity that wouldn't hurt much to have in "_cross_val_score".

In this case, we should probably deprecate fit_grid_point (not removing it, because it is public), and maybe make the other function public.