I'm having trouble with this code which is meant to run a time
comparison between two similar functions. The first module is
makezeros.py

def lots_of_appends():
    zeros = []
    for i in range(10000):              
        zeros.append(0)
                
def one_multiply():
    zeros = [0] * 10000


The second module is timings.py.

import time, makezeros

def do_timing(num_times, *funcs):
    totals = {}
    for func in funcs: totals[func] = 0.0
        for x in range(num_times):
        for func in funcs:
            starttime = time.time()
            apply(func)
            stoptime = time.time()
            elapsed = stoptime-starttime
            totals[func] = totals[func] + elapsed
         for func in funcs:
             print "Running %s %d times took %.3f seconds" %
(func.__name__, num_times, totals[func])    

do_timing(100, (makezeros.lots_of_appends, makezeros.one_multiply))


Here's the outcome I get:

$ python ./Python/timings.py
Traceback (most recent call last):
  File "./Python/timings.py", line 17, in ?
    do_timing(100, (lots_of_appends, one_multiply))
  File "./Python/timings.py", line 10, in do_timing
    apply(func)
TypeError: 'tuple' object is not callable


BTW, the code is taken straight out of Learning Python, but I've
been banging my head on it for awhile. Any ideas??

Kevin


_______________________________________________
Tutor maillist  -  Tutor@python.org
http://mail.python.org/mailman/listinfo/tutor

Reply via email to