Another question

Michael Hudson mwh21 at cam.ac.uk
Mon Apr 17 20:38:17 EDT 2000


"Jeff Massung" <jmassung at magpiesystems.com> writes:

> Donald Beaudry wrote in message <200004172120.RAA11102 at zippy.init.com>...
> >and this one is better still (at least on my machine):
> >
> >  def do_it():
> >      from random import randint
> >      r = [0,] * 100000
> >      for i in xrange(100000):
> >         r[i] = randint(1,10)
> >  do_it()
> >
> 
> With the "from/import" being local, does the namespace go away after the
> function is done? How fast is importing (say I called do_it() 10000 times -
> then how efficient is your function?)

Pretty fast; two dictionary lookups (once in sys.modules, another in
random.__dict__), for strings that will have been interned.

For that last dreg of performance you might try:

import random
def do_it(randint=random.randint,xrange=xrange):
    r = [0,] * 100000
    for i in xrange(100000):
       r[i] = randint(1,10)
do_it()

But really, this is getting silly; if performance is this much of an
obsession you aren't going to have that much fun with Python.

Cheers,
M.

-- 
59. In English every word can be verbed. Would that it were so in 
    our programming languages.
     -- Alan Perlis, http://www.cs.yale.edu/~perlis-alan/quotes.html



More information about the Python-list mailing list