Ich entwerfe eine Python-Anwendung, indem ich eine C++ - DLL aufruft. Ich habe meine Interaktion zwischen meiner DLL und Python 3.4 here gepostet. Aber jetzt muss ich einen Prozess im Streaming mit einem Threading-basierten Modell tun und meine Callback-Funktion sieht aus, um alle print
s in eine Warteschlange zu setzen und nur wenn mein Streaming beendet ist, wird die gesamte Info gedruckt.Python 'print' in einem C++ basierten Threading-Modell
def callbackU(OutList, ConList, nB):
for i in range(nB):
out_list_item = cast(OutList[i], c_char_p).value
print("{}\t{}".format(ConList[i], out_list_item))
return 0
Ich habe versucht, die nächsten Möglichkeiten zu nutzen, aber alle von ihnen sehen in der gleichen Art und Weise zu arbeiten:
from threading import Lock
print_lock = Lock()
def save_print(*args, **kwargs):
with print_lock:
print (*args, **kwargs)
def callbackU(OutList, ConList, nB):
for i in range(nB):
out_list_item = cast(OutList[i], c_char_p).value
save_print(out_list_item))
return 0
und:
import sys
def callbackU(OutList, ConList, nB):
for i in range(nB):
a = cast(OutList[i], c_char_p).value
sys.stdout.write(a)
sys.stdout.flush()
return 0
ich, dass mein Rückruf möchte Gibt die Nachricht aus, wenn sie aufgerufen wird, nicht wenn der gesamte Prozess beendet wird.
Bitte überschreiben Sie Ihre Frage, wie in natürlicher Sprache, konnte ich nichts verstehen! –
Ok, das liegt daran, dass ich kein Muttersprachler bin, aber könntest du meine andere Frage verstehen? oder Soll ich den anderen auch besser erklären? –
OT: fast keiner liest "meine andere Frage" -Links, es ist viel besser, stattdessen anwendbare Zusammenfassung einzuschließen. Auf der anderen Seite ist die Verbindung zu bekannten Themen oder Ressourcen (z. B. Wiki: DAG oder Pypi: Cffi) willkommen. –