GASTBEITRAG: Lieber Cython als Python

eFC logo
GASTBEITRAG: Lieber Cython als Python

Mit ein paar Tricks lässt sich auch mit Python Gas geben. Foto: Getty Images

Es gibt viele Gründe, wieso Python immer mehr zu Mittel erster Wahl wird, um Probleme in Finance zu lösen. Es gibt auch viele Erweiterungen, sogenannte Libraries, um die Finanzmärkte zu analysieren wie z.B. Pandas, um mit Zeitreihen zurechtzukommen. Doch es gibt einen Nachteil: Programme in Python laufen normalerweise deutlich langsamer als diejenigen, die in C-Sprachen geschrieben wurden. Python besitzt ein Global Interpreter Lock (GIL), weshalb alles nur eins nach dem anderen ausgeführt werden kann. Daher werde ich oft gefragt: Wie kann ich Python schneller machen und was muss ich dafür lernen?

Eine Lösung stellt Cython dar. In der Praxis unterscheidet sich der Cython-Code kaum von Python, allerdings mit etwas Schnickschnack. Viele bekannte Python-Libraries setzen schon heute auf Cython. Der große Vorteil besteht darin, dass der Cython-Code in den schnellen C-Code konvertiert werden kann und sie können das GIL austricksen. Kurz: Der Code kann parallel laufen. Allerdings kann es schon ein wenig Zeit kosten, seinen Code umzuschreiben und es mit C-Angaben zu erweitern. Außerdem müssen Sie Ihren Cython-Code übersetzen. Wenn Ihr Projekt ausgiebig von Cython Gebrauch macht, dann beanspruchen diese Änderungen viel Zeit.

Falls Sie sich nicht mit Cython herumschlagen wollen, dann können Sie es auch mit Numba versuchen. Dabei handelt es sich um eine Low Level Virtual Machine (LLVM). Diese reichert ihren Code mit speziellen Instruktionen an und läuft dann mit dem herkömmlichen Python-Interpreter. Doch ebenso wie bei Cython kostet es etwas Zeit, sein Programm umzuschreiben, wenn Sie die maximale Geschwindigkeit herausholen wollen – besonders wenn Sie Ihren Code auf einem leistungsfähigen Grafikprozessor laufen lassen.

Wenn Sie sich hauptsächlich mit der Analyse von Zeitreihen beschäftigen und ausgiebig Gebrauch von Pandas-Libraries machen, dann sollten Sie den Einsatz von Modin erwägen. Bei Modin verändern Sie einfach eine Code-Zeile – ja, genau eine – um Pandas auf Touren zu bringen. Doch noch ist diese Library recht jung, weshalb nicht sämtliche Pandas-Funktionen unterstützt werden. Dask stellt eine andere Library dar, die Ihnen erlaubt, Berechnungen wie Pandas parallel anzustellen.

Sofern Ihr Programm viele Daten aus externen Quellen wie dem Web oder Datenbanken herunterlädt, dann lässt sich das gut mit Pythons Threading- und Asyncio-Libraries beschleunigen. Wer sehr viele Daten verarbeiten muss, kann mit der Multiprocessing-Library verschiedene Berechnungen parallel ausführen lassen. Ein persönlicher Favorit von mir stellt die Celery-Library dar, mit der sich alle Python-Programmierungen auf verteilte Weise erledigen lassen. Diese lässt sich zwar nicht leicht lernen, aber die in Celery investierte Zeit lohnt sich meines Erachtens. Ich habe davon in den zurückliegenden Jahren ausführlich Gebrauch gemacht, um einige Berechnungen von Kostenanalysen zu beschleunigen, die eine Menge von Intraday-Kursen verwenden.

Die letzte Möglichkeit, ihrem Python-Code die Sporen zu geben, sollten Sie wahrscheinlich als erstes versuchen! Diese besteht darin, seinen Code zu vektorisieren, indem Sie Libraries wie NumPy oder Pandas einsetzen, anstatt immer wieder Schleifen zu verwenden. Dies reicht meist aus, um Ihren Code auf Trab zu bringen.

Sicherlich ist Python nicht die schnellste Sprache. Dennoch gibt es Lösungen, um die Verarbeitung des Codes zu beschleunigen. Leider ist das nicht gratis zu haben. Vielmehr müssen Sie ein wenig Zeit in die Dinge investieren, die ich Ihnen vorgestellt habe.

Saeed Amen ist ein systematischer Devisenhändler, der seit 2013 sein eigenes Handelsbuch in den zehn größten Devisen hat. Amen hat schon Handelssysteme für verschiedene Großbanken wie Lehman Brothers und Nomura entwickelt.

Beliebte Berufsfelder

Loading...

Jobs suchen

Artikel suchen

Close