[Baypiggies] PyCon 2007

Ken Seehart ken at seehart.com
Thu Feb 22 19:36:19 CET 2007

Hello from Texas!

Just finished /*Faster Python Programs through Optimization and 
Extensions I* 
<http://www.python-academy.de/download/pycon/fasterpython_I.pdf> /tutorial.

Started a little slowly with comparisons of list joins vs sequential 
string concatenation, etc, while showing how to use time.clock() to 
compare performance.

Started getting interesting with some real tools, like Numpy 

Most valuable insight for me: look at Psyco 
<http://psyco.sourceforge.net/>.  This has got to be the quickest way to 
get a performance boost (about 4x in some examples) on Intel processors 
without any effort.  Two lines of code will often do the trick.
import psyco
psyco.full() # converts and binds all of your functions to native code

Also looked at pyrex, a custom language which makes it pretty easy way 
to rewrite existing python code and wrap existing C/C++ code to be 
compiled with a C compiler.  Seems easier than boost or swig (except 
perhaps for large API libraries), and much easier than hand coding C 

# file: mc_pi_pyrex_fast.pyx
cdef extern from "math.h": #1
double sqrt(double x) #2
cdef extern from "stdlib.h": #3
int rand() #4
int RAND_MAX #5
def piPyrex(int n):
cdef int count_inside, count #6
cdef float x, y #7
count_inside = 0
for count from 0 <= count < n: #8
x = rand() #9
y = rand()
d = sqrt(x*x + y*y) #10
if d < RAND_MAX: #11
count_inside = count_inside + 1
return 4.0 * count_inside / n

Covered ctypes for yet another way to wrap a DLL or shared library.

Compared a variety of tools for relative speed (see the pdf 

- Ken Seehart
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mail.python.org/pipermail/baypiggies/attachments/20070222/5bc43543/attachment.html 

More information about the Baypiggies mailing list