In meinem Python Script erhalte ich einen konstanten Datenfluss, möchte aber die Daten asynchron durch Aufruf einer asynchronen Methode pushen. Die Daten, die in einem Puffer vorhanden sind, werden immer gepuffert, wenn die Methode verfügbar ist.Python - asynchrone Methoden über Threading verwalten
Um dies zu erreichen, habe ich einen try/catch, der ständig aufgerufen wird, der ein Thread-Objekt erstellt, das eine Methode ausführt (und ich nehme an, wenn die Methode beendet wird) und wenn der Thread die try/catch Breaks ausführt .
import thread
import threading
thr = None
...
try:
if thr.is_alive():
print "thread running"
else:
thr.Thread(target=move_current_data, args=(data_buffer))
thr.start()
data_buffer.clear()
except NameError:
print ""
except AttributeError:
print "
def move_current_data(data_buffer):
...
return
Wäre es einfacher und sauberer, dies zu schreiben?
kann ich weitere Informationen zur Verfügung stellen, wenn
benötigt
Kann ich t = threading.Thread und t.start() mehrmals aufrufen? Es gibt Zeiten, in denen es keine Daten geben kann, aber ich möchte nicht, dass der Thread beendet wird. – BDillan
In meinem Code wird der Pusher-Thread nicht beendet, wenn Sie keinen None-Wert in die Warteschlange setzen. Setzen Sie daher keinen None-Wert in die Warteschlange, bis das Programm zum Beenden bereit ist. Wenn keine Daten vorhanden sind, blockiert der Pusher-Thread beim Aufruf "Get". – ErikR