> -----Original Message----- > From: python-list-bounces+bsk16=case....@python.org [mailto:python-list- > bounces+bsk16=case....@python.org] On Behalf Of rik > Sent: Tuesday, June 29, 2010 10:52 PM > To: python-list@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 -- http://mail.python.org/mailman/listinfo/python-list