On May 10, 6:33 pm, "Terry Reedy" <[EMAIL PROTECTED]> wrote: > "mosscliffe" <[EMAIL PROTECTED]> wrote in message > > news:[EMAIL PROTECTED] > > Asun Friere pointed out the central flaw in your program. Since passing > functions as arguments is an important concept, here, for any newbies who > did not understand, is a restatement of the problem and the fix. > > | timeloop(lookup(myrecs,mypatts), 10) > > This does not pass the lookup function to timeloop. Rather it calls lookup > and passes the boolean result. The attempt to 'call' that boolean gives > > |I am trying to time a function's execution, but I get 'TypeError: > | 'bool' object is not callable' when I try to run it. > > | I suspect it is my calling of 'timeloop' with the function name > | 'lookup' and its associated variables > > Yes. Make the following changes and all should be well. > > | def timeloop(dofunction,iters=10): > > def timeloop(func, args, iters=10) > > | import datetime > | print "->-> Start of test", "LOOPS=", iters, > | datetime.datetime.now().ctime() > | for x in xrange(iters): > | print x > | dofunction() > > func(*args) > > | print "<-<- End of test", "LOOPS=", iters, > | datetime.datetime.now().ctime() > | > | def lookup(recs,patterns): > | matchcount = 0 > | pattcount = 0 > | for patt in patterns: > | if matchcount < pattcount: > | break > | pattcount += 1 > | for rec in recs: > | # print "PATT:", patt, " REC:", rec, " PATTCOUNT=", pattcount > | if patt in rec: > | matchcount +=1 > | break > | # print"MATCHCOUNT=",matchcount, "PATTCOUNT=", pattcount > | if matchcount == pattcount: > | return True > | else: > | return False > | > | > | > | myrecs = ['This is a title for Brian', 'this is detail one for brian', > | 'this is detail two for brian', 'this is another detail one for > | brian'] > | > | test1 = ['one', 'nomatch'] > | test2 = ['one', 'two'] > | test3 = ['title', 'two', 'nomatcheither'] > | > | mypatts = test1 > | > | timeloop(lookup(myrecs,mypatts), 10) > > timeloop(lookup, (myrecs, mypaths), 10) > A smaller change would be:
timeloop(lambda: lookup(myrecs,mypatts), 10) -- http://mail.python.org/mailman/listinfo/python-list