[Python-de] Extension

Philipp Kraus philipp.kraus at flashpixx.de
Mo Apr 2 13:42:24 CEST 2012


On 2012-03-27 11:35:13 +0200, Christian Theune said:

> On 03/27/2012 11:19 AM, Stefan Behnel wrote:
>> Stefan Behnel, 27.03.2012 10:54:
>>> Philipp Kraus, 23.03.2012 16:30:
>>>> Wenn ich das dann richtig verstehe, würde mir der Generator aus meiener CPP
>>>> Implementation der Klasse entsprechenden Pythoncode erzeugen
>>> 
>>> Grundsätzlich erstmal ja
>> 
>> Äh, hopsa - zu schnell geantwortet. "Python-Code" im Sinne von "Code für
>> CPython" (oder andere Python-Implementierungen), nicht im Sinne von "Python
>> Source-Code".
>> 
>> Der generierte Code ist in deinem Fall immer C++ (wenn auch wahrscheinlich
>> mit hohem C-Anteil).
> 
> Und noch eigentlicher erzeugt er doch nur Glue-Code, der den 
> Objekt-Code der entsprechenden Library instrumentiert und dieser 
> Glue-Code ist für Python sichtbar. Die Original-Library wird ja dadurch 
> nicht nach Python portiert sondern für Python nutzbar.

Erst einmal vielen Dank an alle. Ich habe mir jetzt noch mal Swig 
angeschaut und
mit Java bzw JNI getestet, das funktioniert schon mal ganz gut und der 
erzeugte C
Code ist jetzt auch nicht so schlimm. Swig erzeugt bei Java JNI C Code, wobei
er eben die Adresse den C++ Objektes durchschleift und dann entsprechend
damit arbeiten. Drumherum wird dann ein entsprechender Glue-Code
erzeugt, mit dem ich dann unter Java arbeite.

Ich hoffe mal, dass es bei Python genauso ist. Nur muss ich im Moment mich
erst einmal in die Pakagestruktur einlesen und wie ich dann alles richtig
organisieren. Es soll später ja ein portables Paket raus kommen mit 
prekompilierten
Binaries bzw. Sources Codes zum selbst kompilieren.

Zu den Algorithem: Es sind überwiegend Heuristiken und numerische Algorithmen,
d.h. ich brauche nur eine Anbindung von Python, d.h. die Daten müssen 
durchgereicht
werden. NumPy bietet zwar schon einige passende Algos fertig an, aber 
leider nicht alle.
Außerdem möchte ich möglichst "einfache" Datentypen verwenden, d.h. Python soll
mit simplen Typen und Listen arbeiten, die C/C++ Komponenten 
konvertieren dann die
Daten passend und berechnen und liefern die Ergebnisse wieder in 
einfachen Typen / Listen
nach Python.

Danke

Phil



Mehr Informationen über die Mailingliste python-de