PyCon X

firenze

2-5 maggio 2019

Codice più efficiente? Restate cythonizzati

Che lo sappiate o no, ogni volta che usate pandas o scipy o astropy o caffe o statsmodels… state utilizzando codice scritto in cython.

O meglio, state utilizzando anche codice cython.

Questo “anche” è la vostra salvezza se il vostro amore per Python è dovuto almeno in parte a quella sana pigrizia che ti dice “chi lascia la strada vecchia per la nuova…” Perché cython non ti obbliga a prendere una strada nuova dal classico listato Python: ti permette invece di prendere solo le scorciatoie che desideri.

Lo scopo di questo tutorial quindi non è mostrare che cython è la soluzione a tutti problemi, ma che per quei problemi di performance di cui è la soluzione, provare a “cythonizzare” il codice può dare risultati sorprendenti con uno sforzo minimo.

Quanto minimo? Il tempo di questo tutorial! (Che includerà qualche esempio di integrazione cython - numpy)

Requisiti

Venite armati di portatile, con installati

  • Jupyter notebook
  • Python 3 (preferibilmente 3.5.x o successivo)
  • cython3 (ed un compiler)
  • numpy versione 1.10 o successiva

Tutto ciò si può trovare negli archivi ufficiali Debian o Ubuntu: pacchetti cython3, build-essentials, python3-numpy e jupyter-notebook (o ipython-notebook). Oppure si può installare con pip o con conda/anaconda, come indicato qui, qui e qui.


Comments

  1. Gravatar
    il talk è segnalato in inglese ma l'abstract è italiano
    — Davide Setti,
  2. Gravatar
    Oops... mea culpa. Comunque il tutorial dovrebbe essere in italiano.
    — Pietro Battiston,
  3. Gravatar
    Ora è IT
    — Carlo Miron,
  4. Gravatar
    Fornirai un'immagine docker pronta all'uso e/o uno script di setup?
    — Roberto Polli,
  5. Gravatar
    docker no, sono tutte componenti decisamente standard. script di setup... dipende cosa intendi. Si può fare velocemente sia con apt-get che con pip che con anaconda.
    — Pietro Battiston,
  6. Gravatar
    ... ciò detto se qualcuno vuole fornirne uno sarò felice di condividerlo. Ma sospetto che la maggior parte degli interessati abbia già installato tutto il necessario.
    — Pietro Battiston,
  7. Gravatar
    Ciao Pietro, io lavorerò con un Mac: il compilatore che esce di default con Mac Xcode (clang) va bene oppure devo procurarmi gcc?

    — Martin De Luca,
  8. Gravatar
    Credo che vada bene! Prova in un notebook jupyter

    %load_ext Cython

    e poi in un'altra cella

    %%cython

    a = 3+3
    — Pietro Battiston,
  9. Gravatar
    P.S: possono essere utili/comodi durante il training: 1) pandas 2) line-profiler 3) numba
    — Pietro Battiston,
  10. Gravatar
    Ok dovrei essere apposto con l'env :D
    — Martin De Luca,

Nuovo commento