Why aren't copy and deepcopy in __builtins__?

John Ladasky ladasky at my-deja.com
Mon Mar 28 13:30:03 EDT 2011


On Mar 28, 2:25 am, Andrea Crotti <andrea.crott... at gmail.com> wrote:
> John Ladasky <lada... at my-deja.com> writes:
> I almost never use them either, maybe also in many cases you could avoid
> using them...
> When for example you use them?

To take one example: neural network programming.  I construct a
network object (which is quite complex), test it, and keep it.  Next,
I copy the network object, apply a slight variation to it, and test
that.  If the variant performs less well than the original, I discard
the variant, and try another slightly-varied copy of the original.  If
the variant is superior, I discard the original.  And so on.

Another use: When I'm profiling code for speed, I generate a sequence
of function calls in a specific order.  I would like to retain that
ordered sequence for when I print out the results of my speed test,
but also generate shuffled variations of that sequence.  But
random.shuffle() alters the sequence in place, it does not return a
copy.  If shuffle() did return a copy, I would not need to invoke copy
myself, but that's how the library function is written.

> I noticed some time ago in a program that needed speed that deepcopy in
> particular is incredibly slow, but I guess is normal since it has to
> copy every bit of the data structure.

That may be, but when it already takes several seconds for my neural
network object to compute the output from a 100-element input
sequence, the time that the occasional deepcopy call takes is
insignificant to me.



More information about the Python-list mailing list