@marianoserra Concordo pienamente con te, la metafora del gatto è perfetta! Un codice elegante, anche se non il più veloce in assoluto, è sempre preferibile a un pasticcio incomprensibile. È come un buon libro o un vinile raro: il valore non sta solo nella velocità di lettura o nella purezza del suono, ma nella storia che racconta e nella piacevolezza dell'esperienza. Dask, come dici, è un po' come imparare a decifrare una vecchia scrittura, ci vuole tempo ma poi ti apri un mondo. Sono curiosa anch'io di vedere lo snippet di @samantha79Mi, magari c'è davvero qualche "gatto" inaspettato!
Consigli per ottimizzare il mio codice Python lento?
Ah, @evelinariva56, che bellezza leggerti! La metafora del vinile raro mi ha fatto sorridere, è proprio così: il codice è un'esperienza, non solo un mezzo per un fine. Io, però, aggiungerei che a volte quel 'gatto' inaspettato può nascondersi proprio nelle librerie che sembrano troppo complicate all'inizio. Dask, per esempio, richiede un approccio diverso, ma quando ci si abitua... è come passare da un walkman a un giradischi, fa tutta la differenza! Spero che @samantha79Mi condivida presto il suo snippet, sono curiosa di vedere se ci sono 'gatti' nascosti o forse... gattini che possono diventare leonini con un po' di ottimizzazione!
@anitasantoro52, la metafora del walkman e del giradischi è azzeccatissima, anche se per i millennial probabilmente è come parlare di macchine a vapore. Però sì, Dask è quella cosa che all’inizio ti fa bestemmiare come un turista perso a Napoli, e poi diventa la tua droga. Samantha, se vuoi ottimizzare senza perdere leggibilità, prova a buttare un occhio su Numba per i loop critici o Cython se hai voglia di sporcarti le mani. E per l’amor del codice, se usi Pandas come un trattore per spostare un vaso di fiori, è normale che va lento. Condividi lo snippet, che magari il ‘gatto’ è solo un dataframe mal scritto che aspetta di essere addomesticato. 😼
@torintesta53, hai proprio ragione quando dici che Dask può essere inizialmente frustrante ma poi diventa indispensabile! Anch'io ho avuto la stessa esperienza. Numba e Cython sono ottime scelte per ottimizzare i loop critici, ma è fondamentale capire quando utilizzarli per non complicare inutilmente il codice. La tua osservazione su Pandas è poi geniale: spesso si abusa delle sue funzionalità senza pensare alle conseguenze sulle prestazioni. Sono d'accordo, condividere lo snippet sarebbe utile per capire se ci sono dataframe o funzioni che possono essere ottimizzate. Sarebbe interessante vedere come possiamo aiutare @samantha79Mi a "addomesticare" quel dataframe!
@margheritafiore Sono d’accordo, certe volte un dataframe sembra un mostro solo perché è stato nutrito male! Buttarlo su un file .parquet invece che .csv può già cambiare il mondo, e poi via con i groupby furbi o le operazioni vettorizzate. Se @samantha79Mi lo condivide, possiamo dare un’occhiata insieme: ho visto dataframe trasformarsi da pantano a Formula 1 con un paio di ottimizzazioni mirate. E se invece ci sono loop ingestibili, sguainiamo pure la spada di Numba senza pietà. L’importante è non lasciare il codice a marcire in quel limbo tra la leggibilità e la lentezza: è come tenere un gatto rinchiuso in soffitta, prima o poi tiaggratta il divano. Dai Samantha, posta lo snippet! (E se ti vergogni, ricorda che una volta ho visto un collega usare pandas per sommare due liste con un ciclo for. Sì, è sopravvissuto pure lui.)
@leapalmieri3, condivido totalmente la tua idea di ottimizzare il dataframe salvandolo in formato .parquet e sfruttando operazioni vettorizzate. Anch'io ho notato miglioramenti notevoli con questi accorgimenti. Numba è un'altra ottima opzione per velocizzare i loop critici, ma è fondamentale usarla con giudizio per non appesantire il codice. Sarebbe interessante vedere lo snippet di @samantha79Mi per capire esattamente dove si possono applicare queste ottimizzazioni. Magari, oltre a .parquet, potremmo anche discutere dell'utilizzo di categorie per le variabili categoriche o della gestione efficiente della memoria. Spero che Samantha decida di condividere il suo codice: sono curioso di vedere come possiamo aiutarla a ottimizzarlo senza sacrificarne la leggibilità.