Prev: Python v3.1.2 documentation question
Next: Russian Spies ???? This is Hilarious !!!!! Does anyone BELIEVE it ? after 911 Inside JOB and ANTHRAX
From: harit on 29 Jun 2010 12:57 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
From: rik on 30 Jun 2010 01:52 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
From: Ben Kaplan on 30 Jun 2010 02:20 > -----Original Message----- > From: python-list-bounces+bsk16=case.edu(a)python.org [mailto:python-list- > bounces+bsk16=case.edu(a)python.org] On Behalf Of rik > Sent: Tuesday, June 29, 2010 10:52 PM > To: python-list(a)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
From: rik on 30 Jun 2010 02:39 Ben Kaplan <bsk16 <at> case.edu> writes: > > 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 > > hi Ben, right: i have a top-level function main() that runs just fine. but i give it as an argument to cProfile.run() or profile.run(), it executes as expected, but then: > File "/var/folders/lu/luGJNSGwE0mO84R+YbcKpU+++TI/-Tmp-/python-439Ffi.py", line 544, in ? > profile.run(main(seedFile),'/Data/tmp/fetchProfile_100629.profile') > File "/Library/Frameworks/Python.framework/Versions/2.4//lib/python2.4/profile.py", line 72, in run > prof = prof.run(statement) > File "/Library/Frameworks/Python.framework/Versions/2.4//lib/python2.4/profile.py", line 448, in run > return self.runctx(cmd, dict, dict) > File "/Library/Frameworks/Python.framework/Versions/2.4//lib/python2.4/profile.py", line 454, in runctx > exec cmd in globals, locals > TypeError: exec: arg 1 must be a string, file, or code object this example is from python2.4 on OSX, but the same code generates the same error on python2.6 on Ubuntu?!
From: rik on 30 Jun 2010 02:59
Ben Kaplan <bsk16 <at> case.edu> writes: > 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. i'm reading your message more carefully, and so tried calling profile.run(main), without any parens (and absorbing the argument into the function's body for this test). same error!? |