Anche se non conosco una risposta diretta alla tua domanda, non posso resistere alla risposta indiretta:
I heard that if you want to make certain parts of your python programs faster, or if a certain part of the program was really hurting your program's performance, you write them in C, and make Python call them.
Come scritto in la risposta più alta della domanda SO che hai collegato a , "lento" qui significa decine di nanosecondi. Se la tua parte costosa (scritta in C) richiede anche solo un microsecondo per essere eseguita, il costo proporzionale dell'interfaccia C / JNI è trascurabile. Il costo arriva solo ogni volta che chiama la parte nativa (e quando la chiamata ritorna), non mentre la parte nativa è in esecuzione. Se si mantiene basso il numero di chiamate, il costo aggiuntivo è basso. Cioè, non scrivere loop Python stretti che chiamino funzioni C; scrivi il ciclo stesso in C e chiamalo da Python.
Un altro esempio del fatto che i costi JNI sono in genere trascurabili: molte delle classi principali di JDK, ad es. la maggior parte delle funzioni in Math , e in definitiva tutte le funzioni grafiche e I / O mappa per le chiamate JNI sotto il cofano. Indipendentemente da ciò, Java è generalmente considerato molto più veloce di CPython.