- GND
- 136084575
- ORCID
-
0000-0002-7195-4253
- ResearcherID
- M-8079-2013
- SCOPUS
- 55665924300
- SCOPUS
- 57191348264
- SCOPUS
- 57192427884
- SCOPUS
- 57200087717
- Sonstiges
- der Hochschule zugeordnet
- GND
- 131979590
- ORCID
-
0000-0002-9714-4881
- SCOPUS
- 12646156400
- Sonstiges
- der Hochschule zugeordnet
Abstract in Deutsch:
In dieser Arbeit wird untersucht, wie sich Python-Module in C++-Anwendungen einbinden lassen. Während Python in Forschung und Entwicklung für Rapid Prototyping weit verbreitet ist, ist C++ die De-facto-Standardsprache für einsetzbare, kundenspezifische Software. Beide Sprachen haben ihre Vor- und Nachteile, daher ist die Integration beider sinnvoll, z.B. um Kunden schnell neuentwickelte Signalverarbeitungsalgorithmen zur Verfügung zu stellen, ohne dass diese vorher in C++ neu implementiert werden müssen. Umgekehrt kann das Verhalten solcher Algorithmen im Kontext der Kundenanwendung untersucht werden, unter Verwendung aller vorhandener Funktionen, die im Rapid-Prototyping-Framework eventuell nicht existieren. Als Grundlagen des Frameworks werden die technischen Aspekte der Ausführung von Python-Code und das Design des CPython-Interpreters im Besonderen vorgestellt. Es werden verfügbare Python-Implementierungen evaluiert, wobei CPython als am besten geeignet erachtet wird; seine umfangreiche Programmierschnittstelle (API) erweist sich als besonders vorteilhaft. Zur Verwendung der C-API in C++ werden API-Frameworks wie pybind11 als hilfreich angesehen, da sie C++-Funktionen wie implizite Datentypkonvertierung nutzen. Von den unterstützten Arten von Python-Code erfüllen Binärmodule durch Verwendung der C-API weitere wichtige Anforderungen: Durch vorherige Übersetzung in Maschinencode erlauben sie höchste Rechengeschwindigkeiten, zeitgleich ein hohes Maß an Schutz von geistigem Eigentum (IP). Um eine Neuimplementierung in C zu vermeiden, werden Werkzeuge zur Generierung von Modulcode aus Python-Quellcode untersucht, von denen Nuitka die komfortabelsten Funktionen bietet. Das vorgestellte Framework-Konzept PyUnion umfasst Softwarekomponenten, welche für Rapid Prototyping die Ausführung Python-Module jeglicher Art aus C++-Anwendungen heraus, sowie die Nutzung gemeinsamer Datenstrukturen für den Austausch zwischen beiden Umgebungen ermöglichen. Zur Unterstützung langlaufender Prozesse wird die Verwendung von im Hintergrund laufenden Threads vorgesehen, sowohl für die Ausführung der Python-Module als auch für Steuerungs- und Überwachungszwecke. Weitere wichtige Designaspekte sind der Einsatz von pybind11 zur Interaktion mit Python und Einbettung des CPython-Interpreters, sowie Nuitka zur Kompilierung von Python-Quellcode zu Binärmodulen.