2017-11-22 1 views
0

Ich versuche, eine c++ Implementierung eines Modells (sent2Vec) von einem python p-Programm mit dem subprocess-Modul auszuführen. Das c++ Programm läuft eine Schleife wie folgt aus:Python-Unterprozesse - Übergabe mehrerer Befehle in einer Schleife

while(raw_input): 
    print(perform_action(input)) 

Dies ist, weil es ein großes Modell in den Speicher geladen und dann verwendet sie, wie und wann eine Abfrage an sie weitergegeben wird. So sieht die C++ Ausgabe wie folgt:

Pre-computing vectors... done. 
Query sentence? 

query 
0.603723 1 a1 
0.306778 2 a2 
0.262201 4 a3 
0.198674 0 a4 
0.131687 3 a5 
0.121209 5 a6 
0 6 

Query sentence? 

Ich mag würde das Programm auszuführen und dann, wenn sende einen Eingang und lesen Sie die Ausgabe erforderlich. Ich kenne die Anzahl der erzeugten Zeilen pro Abfrage, also ist es in Ordnung, wenn ich jedes Mal die gesamte Ausgabe lesen muss.

Ich habe versucht, die folgenden:

process = Popen(cmd, stdin=PIPE, stdout=PIPE) process.stdin.write(query) process.stdout.readlines()

Dies scheint jedoch in einer Schleife stecken. Ich schaute auf mehrere Stackoverflow-Threads und die meisten von ihnen schlagen vor, was ich versuchte. Ich würde wirklich jede Hilfe schätzen.

Vielen Dank im Voraus!

Antwort

0

Es gab eine Deadlock-Situation. Sie müssen die Anzahl der Zeilen, die in stdout geschrieben wurden, genau zählen und dann nur unter stdin schreiben.

Verwandte Themen