2016-05-18 6 views
0

Ich habe einen Algorithmus in Python, der eine erschöpfende Suche nach Möglichkeiten bei einer Reihe von Eingaben.Python zu "streamen" Wörterbuch-Verarbeitung

Dies ist an eine Webanwendung angeschlossen und kann bis zu 15 Sekunden dauern, um vollständig zu verarbeiten.

Also ... Ja, ich möchte den Algorithmus verbessern und schneller verarbeiten, aber ich möchte auch eine Visualisierung mit einbeziehen, die die Möglichkeiten von Python beschreibt, bis es zu einer Lösung kommt.

In meinem Terminal erzeugt Python die Liste der Möglichkeiten Zeile für Zeile, bis er eine Combo findet, die die Anforderungen

erfüllen Wie kann ich Python Terminal-Ausgabe mit meinem clientseitigen Rahmen einhaken

Im Idealfall würde es die Ausgabe des Terminals simulieren und der Benutzer kann Beweise sehen, dass der Algo läuft, während er wartet.

Würde ich die Ausgabe in Bytes konvertieren, einen Socket öffnen und dann die Daten in meiner Anwendung streamen, während ich sie deserialisiere?

Antwort

0

Sie können dies mit Websockets tun. Im Allgemeinen haben Sie einen separaten Socket-Server wie socket.io ausgeführt. Sowohl Ihr Webserver als auch Ihr clientseitiges JavaScript würden sich mit dem Socket-Server verbinden und vor und zurück kommunizieren oder in Ihrem Fall nur fortlaufend Nachrichten an den Client senden.

+0

Macht es einen Unterschied, dass ich Django im Backend verwende? Ich sehe, dass es Bibliotheken wie dieses https://github.com/abourget/gevent-socketio gibt. Ist das das richtige Werkzeug für das, was ich zu erreichen versuche oder gibt es ein einfacheres? –

+1

Es spielt keine Rolle, welches Backend Sie verwenden. Sie können die 'gevent-socketio'-Implementierung verwenden oder einfach den normalen nodejs socket.io verwenden. In jedem Fall läuft es normalerweise als separater Prozess/Server. –

+0

Wenn ich node.js socket.io (vertrauter mit dieser Plattform) verwenden würde, würde ich einfach so etwas implementieren? https://gist.github.com/mattgorecki/1375505. Ich habe einen node.js Server, der meine clientseitigen Daten bedient, also könnte ich nur diesen verwenden. Danke für die Antwort auf meine Follow-up BTW. Wenn Sie nicht antworten, gehe ich einfach den Knotenpfad hinunter –