<div dir="ltr">I think I have Cython already installed with Anaconda.<div><br></div><div>How it works?</div><div><br></div><div>Thanks</div><div><br></div><div>Gabriele</div></div><div class="gmail_extra"><br><br><div class="gmail_quote">
2014-04-11 8:16 GMT-04:00 Albert-Jan Roskam <span dir="ltr"><<a href="mailto:fomcl@yahoo.com" target="_blank">fomcl@yahoo.com</a>></span>:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
________________________________<br>
> From: Gabriele Brambilla <<a href="mailto:gb.gabrielebrambilla@gmail.com">gb.gabrielebrambilla@gmail.com</a>><br>
>To: Danny Yoo <<a href="mailto:dyoo@hashcollision.org">dyoo@hashcollision.org</a>><br>
>Cc: python tutor <<a href="mailto:tutor@python.org">tutor@python.org</a>><br>
>Sent: Friday, April 11, 2014 5:30 AM<br>
>Subject: Re: [Tutor] improving speed using and recalling C functions<br>
<div class="">>  <br>
><br>
><br>
>Hi Danny,<br>
>I followed your suggestion.<br>
>Tomorrow morning I will run this new version of the code.<br>
><br>
><br>
>Now using a sample of 81 elements (instead of 600000) the profile returns:<br>
><br>
><br>
>Thu Apr 10 23:25:59 2014    restats<br>
><br>
><br>
>         18101188 function calls in 1218.626 seconds<br>
><br>
><br>
>   Ordered by: internal time<br>
>   List reduced from 13 to 10 due to restriction <10><br>
><br>
><br>
>   ncalls  tottime  percall  cumtime  percall filename:lineno(function)<br>
>        1 1015.803 1015.803 1218.334 1218.334 skymaps5.py:44(mymain)<br>
> 18101000  202.490    0.000  202.490    0.000 {method 'write' of 'file' objects}<br>
><br>
><br>
>        1    0.292    0.292 1218.626 1218.626 <string>:1(<module>)<br>
>        6    0.029    0.005    0.029    0.005 {open}<br>
>        5    0.010    0.002    0.010    0.002 {method 'close' of 'file' objects}<br>
><br>
><br>
>       81    0.002    0.000    0.002    0.000 {method 'split' of 'str' objects}<br>
>       82    0.001    0.000    0.001    0.000 {zip}<br>
>        1    0.000    0.000    0.000    0.000 function_base.py:8(linspace)<br>
>        1    0.000    0.000    0.000    0.000 function_base.py:93(logspace)<br>
>        5    0.000    0.000    0.000    0.000 {numpy.core.multiarray.zeros}<br>
><br>
><br>
>Anyway I would like to try to speed it up using C functions (and maybe comparing the resuts of the two profile in the end)<br>
>How can I do it now? Can I use Cython?<br>
<br>
</div>If you have a compiler installed already it's just easy_install cython. Writing Cython is not hard. That is, you easily get speed improvements. It's in a .pyx file and once you're done you generate the .c and .so/.dll files with a setup.py like below. Reason why I am posting this snippet is the way to generate an annotated html file of your cython code. The whiter, the more in C, the better. Yellow means stuff might still be improved more.<br>

 <br>
* setup.py<br>
from distutils.core import setup<br>
from distutils.extension import Extension<br>
from Cython.Distutils import build_ext<br>
import Cython.Compiler.Options<br>
Cython.Compiler.Options.annotate = True   # <---- really handy<br>
<br>
setup(<br>
    cmdclass = {'build_ext': build_ext},<br>
    ext_modules = [Extension("myModule", ["myModule.pyx"])]<br>
<br>
)<br>
</blockquote></div><br></div>