Python Code beschleunigen?

2 Antworten

Meine CPU ist allerdings nur zu 5% ausgelastet.

Das könnte darauf hindeuten, dass der Code vor allem mit I/O beschäftigt ist. Wie gesagt könnte, wir haben ja keine Ahnung, was der Code macht.

Gibt es irgendwelche tools, mit der ich meine Funktion beschleunigen kann?

Pauschal? Nein. Manchmal hilft PyPy, ohne Codeänderungen ein paar Prozent rauszuschlagen. Aber in aller Regel muss man selbst schauen, woran es hakt. Ist mein Algorithmus prinzipiell ineffizient? Verwende ich ungeeignete Funktionen der Sprache oder der Bibliotheken? Habe ich etwas selbst gebastelt, was andere schon in eine effiziente Bibliothek gegossen haben? Könnte ich etwas parallelisieren?

Als hilfreiches Werkzeug gibt's dafür sogenannte Profiler. Der wahrscheinlich beste für Python ist Scalene: https://github.com/plasma-umass/scalene - aber mit so einem Werkzeug muss man auch umgehen können.

Du kannst zB versuchen unabhängige Aufgaben auf mehrere Threads zu verteilen. Das lastet deine CPU besser aus.

Ansonsten kannst du für eine Steigerung kritische Codepfade in C++ schreiben oder dafür in C++ geschriebene Bibliotheken verwenden.