Python profiler usage with objects

Ben Kaplan bsk16 at case.edu
Wed Jun 30 02:20:57 EDT 2010



> -----Original Message-----
> From: python-list-bounces+bsk16=case.edu at python.org [mailto:python-list-
> bounces+bsk16=case.edu at python.org] On Behalf Of rik
> Sent: Tuesday, June 29, 2010 10:52 PM
> To: python-list at python.org
> Subject: Re: Python profiler usage with objects
> 
> harit <harit.himanshu <at> gmail.com> writes:
> 
> >
> > Hi,
> >
> > I have a specific question regarding the usage of profiler. I am new
> > to python programming I am trying to profile a function which I want
> > to invoke as a class method, something like this
> >
> > import profile
> >
> > class Class:
> >
> > def doSomething():
> >
> >     do here ..
> >
> > def callMethod():
> >
> >     **self.doSomething()**
> > instead of this I want to use
> >
> >     **profile.run(self.doSomething())**
> > but the profile.run expects the string inside it and I get error
> >
> > TypeError: exec: arg 1 must be a string, file, or code object
> >
> > Can somebody please help?
> >
> > Thank you
> >
> 
> 
> Harit,
> 
> i am OLD to python, and have used its profiler in the past.
> but i'm getting your same error:
> 
> > TypeError: exec: arg 1 must be a string, file, or code object
> 
> on both Ubuntu with Python 2.6 and OSX with 2.4.  with both cProfile and
> profile?!  whether or not i specify a file for profile output!?!
> 
> anybody else having trouble profiling?
> 
>  - rik
> 

Let's take this code as an example:

def foo() :
    return None

import profile
profile.run(foo())

What does the profile.run call do?

First thin it does is evaluate foo(), which returns None. So you're calling
profile.run(None)

There's  nothing special about profile.run- you have to hand it something to
execute, not something already executed. Try calling
Profile.run(doSomething) # no parenthesis for doSomething.
> 
> --
> http://mail.python.org/mailman/listinfo/python-list




More information about the Python-list mailing list