[pygtk] Application running Slow (4,000 Lines of Code)

A.T.Hofkamp a.t.hofkamp at tue.nl
Fri Jun 9 16:35:43 WST 2006


Hello,

JUAN ERNESTO FLORES BELTRAN wrote:
> Hi you all,
> 
> I am coding a pygtk/matplotlib/basemap application. Actually i have 
> coded 4,000 lines and i consider 2,000 more lines will be required to 
> finish my application. The point is the application is becoming to slow.

Could you elaborate on this?

I understand that you consider the application as a whole to be not fast 
enough, but did you perform profiling to identify what part of the program is 
exactly causing the problem?

Two modules come into mind:
1. Python profiler: see http://docs.python.org/lib/profile.html
2. timeit module, see http://docs.python.org/lib/module-timeit.html

with these, you should be able to determine what part of the program is the 
problem, so you can concentrate your attention to the point where it makes a 
difference.

> I have done all the stuff required to optimize and minimize the code 
> required to perform tasks such as calculations and vector/array 
> operations which cause memory leak. Despite basemap and matplotlib are 
> "heavy modules" which consume machine resources most of the code (around 
> 80% of the whole program) is  related to widgets, boxes, labels, 
> buttons, notebooks, dialogs and all the pygtk code the GUI requires.

In my experience, size of the code in lines says very little about the 
execution speed. We have several Python programs with thousands lines of code, 
and find the execution speed satisfactory (ie we have established using 
profiling that the bottleneck is not in Python).

> I wonder how can improve the application performance??. I am thinking of 
> splitting into different modules which can be imported from the main 
> script, so the main script would load/run faster, and the rest of the 
> code will be located in modules wich code will be executed once the user 
> clicks a button or whenever required.
> 
> Can any one suggest any way to improve the program performance??

First profile, so you get a handle on what the actual problem is rather than 
'somewhere in the program I should change something'. Once you have identified 
where the problem is exactly, you can think about solving it, and/or ask more 
specific questions (at the right mailinglist).


Good luck,
Albert


More information about the pygtk mailing list