boost :: python - wie man eine Python-Funktion in einem eigenen Thread von C ++ aus aufruft?

8

Ich habe ein Modul in Python geschrieben. Dieses Modul ist eine Art Schnittstelle zu vielen verschiedenen Funktionalitäten, die ich in Python implementiert habe:

EmbeddingInterface.py importiert dieses Modul einfach und erstellt eine Instanz:

%Vor%

Ich möchte cppControllerInstance in C ++ verwenden. das habe ich bisher gemacht:

%Vor%

Das Problem:

Dieser 'Controller' hat einige Funktionen, die asynchron aufgerufen werden müssen. seine Arbeit ist kontinuierlich und kann darüber hinaus Ausnahmen auslösen. deshalb klang std :: async großartig.

Aber es funktioniert nicht:

%Vor%

Ich habe versucht, die Python-Funktion 'loadScene' mit einem eigenen Thread aufzurufen, aber die Funktion schien zu blockieren. Es kommt nie zurück.

Was ist der richtige Weg, das zu tun?

    
Nina Kaprez 07.09.2016, 18:07
quelle

1 Antwort

0

Scheint, Sie haben das Verhalten von std :: async

missverstanden

ein Code-Schnipsel:

%Vor%

Ausgabe:

%Vor%

Ändern Sie die Zeile

%Vor%

bis

%Vor%

Dann Ausgabe:

%Vor%

Als Beispiel, um es sofort in einem anderen Thread auszuführen, können Sie versuchen:

%Vor%     
Satie 15.08.2017 17:35
quelle