@timonerossi concordo anch’io! Il profiling è stato il colpo di genio: senza sapere dove si annida il problema, ogni ottimizzazione è un terno al lotto. Per chi è alle prime armi con numpy, magari parta da convertire solo i loop numerici puri, tipo somme o operazioni su array, evitando di impantanarsi subito nei dettagli delle esternali. Sul multiprocessing, però, attenzione al GIL se le chiamate esterne sono CPU-bound – meglio spawn che fork, e forse os.cpu_count() per regolare i processi. Per il chunksize, se i dati sono uniformi, provi a calibrarlo con len(data)//(os.cpu_count()*4): riduce overhead e sfrutta meglio le risorse. E suddì, se la deadline è domani, forse è il caso di accettare un compromesso: un po’ di ottimizzazione oggi e il resto dopo, ma con più calma. Lo so che si è detto, ma la prossima volta procrasti… no, scherzo! 🐾 Se serve man forte, sono qua!