User Tools

Site Tools


neurali:cython

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
neurali:cython [2016/07/02 11:46] profproneurali:cython [2020/06/08 22:20] (current) – external edit 127.0.0.1
Line 1: Line 1:
 +======Cython======
  
 +
 +In breve, si scrive in Python usando tipi del linugaggio C.
 +
 +È un gruppo di comandi aggiuntivi a Python
 +
 +  * Compilazione: Si crea un programma con estensione .pyx, si compila con cython, si ottiene un fle con estensione .c, si compila con gcc.
 +  * Esecuzione: Si ottiene una libreria dinamica .so molto più veloce del tradizionale Python, che può essere importata nei programmi Python, accelerandone il funzionamento.
 +
 +In realtà dopo aver creato il file .pyx si può procedere in diversi modi alternativi
 +
 +  - Si può avviare manualmente cython e gcc da riga di comando (come già spiegato)
 +  - Si può scrivere una sorta di makefile in python (setup.py)
 +
 +
 +====cdef====
 +
 +Quando si vuole usare un tipo C nel linguaggio Python si deve usare la dichiarazione "cdef"
 +
 +====Profilazione (produce file html)====
 +
 +cython -a 
 +
 +====== Esempio hello world ======
 +Dopo aver copiato i seguenti file, si devono esegure due passaggi:
 +
 +  - compilazione: prima generare un file .so
 +    - <code>python setup.py build_ext --inplace</code> 
 +  - esecuzione: poi usare il file .so in un programma python
 +    - <code>from hello import say_hello_to</code>
 +  - oppure
 +    - <code>import hello</code>
 +
 +
 +<file py hello.pyx>
 +def say_hello_to(name):
 +   print("Hello %s" % name)
 +</file>
 +
 +<file py setup.py>
 +from distutils.core import setup
 +from cython.Build import cythomize
 +setup(
 +      ext_modules = cythomize("hello.pyx")
 +     )
 +</file>