2017-10-17 8 views
0

Je souhaite utiliser Bokeh pour représenter graphiquement des données en temps réel à partir d'un script de simulation. Fondamentalement, la simulation sera la source des données de streaming 'en temps réel' et je veux que les graphiques de Bokeh se mettent à jour chaque fois que mon script de simulation le dit. Je veux aussi démarrer le serveur Bokeh programatically et ne voulait pas bloquer le thread principal c'est pourquoi j'ai commencé avec l'exemple embed autonome:Simulation graphique avec Bokeh

https://github.com/bokeh/bokeh/blob/0.12.4/examples/howto/server_embed/standalone_embed.py

Cependant, je me suis aperçu que l'utilisation de cet exemple comme départ point peut être défectueux car une fois que je démarre l'IOloop aucun autre code ci-dessous peut fonctionner, ce qui est un problème car tout mon code de simulation doit être en cours d'exécution pendant que le serveur Bokeh est également en cours d'exécution.

Quelqu'un peut-il me pousser dans la bonne direction pour accomplir cela? Fondamentalement, j'ai besoin d'envoyer des mises à jour à Bokeh pour mettre à jour ses graphiques chaque fois que le script de simulation le lui indique et que les graphiques bokeh doivent apparaître/être interactifs en même temps que mon script de code de simulation. Je voudrais aussi le garder aussi séparé que possible (c.-à-d. Lancer la simulation tout seul sans lancer de graphique bokeh ou vice versa - ne pas bouleverser mon code de simulation original pour que cela fonctionne)

+0

Vous pouvez exécuter votre serveur bokeh avec un rappel périodique qui pourrait lire dans les fichiers de sortie que votre code de simulation peut produire – Seb

+0

Intéressant - Je vais essayer. Cela pourrait effectivement être plus applicable plus tard sur la route une fois que j'ai de gros fichiers en sortie. Pour l'instant, tout ce que le code de simulation produit est juste en mémoire et n'écrit pas encore un objet dans un fichier. – hhprogram

Répondre

0

Juste poster si quelqu'un était curieux. Fait un exemple de jouet dans lequel j'ai eu un script exécuté et produire des «données». Ran il en utilisant bokeh serve --show run.py afin d'obtenir également le serveur bokeh en cours d'exécution.

Mon exemple de jouet: https://github.com/hhprogram/Learning_Examples/tree/master/BokehTest

Ces exemples ont été utiles: https://github.com/bokeh/bokeh/tree/master/examples/app/spectrogram

https://bokeh.pydata.org/en/latest/docs/user_guide/server.html#updating-from-threads

Idéalement, je serais en mesure de simplement ouvrir mon application serveur bokeh séparément et puis exécutez mon script python Chaque fois que je voulais et une fois que ce script était opérationnel et produisait des données, alors mes graphiques bokeh se mettaient à jour mais je n'avais pas encore mis en œuvre cela. J'espère que cela est utile à certains et ouvert à la critique de mon code, alors ne soyez pas timide.