From dcd1633bd9b7fae2bd002ff75f0ac5a365faef3c Mon Sep 17 00:00:00 2001 From: loooph Date: Wed, 1 Mar 2023 03:26:24 +0100 Subject: [PATCH] use threading --- osc/main.py | 41 ++++++++++++++++++++++------------------- 1 file changed, 22 insertions(+), 19 deletions(-) diff --git a/osc/main.py b/osc/main.py index a28d70f..cc789de 100644 --- a/osc/main.py +++ b/osc/main.py @@ -1,43 +1,46 @@ from graphviz import Digraph from pythonosc.dispatcher import Dispatcher from pythonosc.osc_server import BlockingOSCUDPServer +import threading +import time edge_attrs = { 'arrowhead': 'vee', } -g = Digraph('G', filename='graph.gv', format='pdf', engine='circo', strict=True, edge_attr = edge_attrs) +g = Digraph('G', filename='graph.gv', format='png', engine='circo', strict=True, edge_attr = edge_attrs) -# last vertex received -v = -1 -# last edge target received -w = -1 -# last edge type received -t = "" +g_lock = threading.Lock() def print_vertex(address, *args): - global v global g v = args[args.index('vertex') + 1] if v == -1: - g = Digraph('G', filename='graph.gv', format='pdf', engine='circo', strict=True, edge_attr = edge_attrs) + with g_lock: + g = Digraph('G', filename='graph.gv', format='pdf', engine='circo', strict=True, edge_attr = edge_attrs) return - g.node(str(v)) - g.render("Test") + with g_lock: + g.node(str(v)) print(args) def print_edge(address, *args): - global v - global w - global t + v = args[args.index('v') + 1] w = args[args.index('w') + 1] t = args[args.index('edge_type') + 1] - print(args) - # print((v,w,t)) - if v == -1 or w == -1: + if v == -1: return - g.edge(str(v), str(w)) - g.render("Test") + with g_lock: + g.edge(str(v), str(w)) + print(args) + +def update_loop(): + while True: + g.render("Test") + time.sleep(0.4) + +ul_thread = threading.Thread(target=update_loop) + +ul_thread.start() dispatcher = Dispatcher() dispatcher.map("/edge", print_edge)