diff --git a/core/generator/flow_graph.py.mako b/core/generator/flow_graph.py.mako index 64c1661..2daf678 100644 --- a/core/generator/flow_graph.py.mako +++ b/core/generator/flow_graph.py.mako @@ -161,6 +161,9 @@ gr.io_signature.makev(${len(io_sigs)}, ${len(io_sigs)}, [${', '.join(size_strs)} self._lock = threading.RLock() % endif +% if not generate_options.startswith('hb'): + self.flowgraph_started = threading.Event() +% endif ######################################################## ##Create Parameters ## Set the parameter to a property of self. @@ -335,6 +338,7 @@ def main(top_block_cls=${class_name}, options=None): ${'snippets_main_after_init(tb)' if snippets['main_after_init'] else ''} % if flow_graph.get_option('run'): tb.start(${flow_graph.get_option('max_nouts') or ''}) + tb.flowgraph_started.set() % endif ${'snippets_main_after_start(tb)' if snippets['main_after_start'] else ''} % if flow_graph.get_option('qt_qss_theme'): @@ -367,6 +371,7 @@ def main(top_block_cls=${class_name}, options=None): ${'snippets_main_after_init(tb)' if snippets['main_after_init'] else ''} try: tb.start() + tb.flowgraph_started.set() ${'snippets_main_after_start(tb)' if snippets['main_after_start'] else ''} bokehgui.utils.run_server(tb, sizing_mode = "${flow_graph.get_option('sizing_mode')}", widget_placement = ${flow_graph.get_option('placement')}, window_size = ${flow_graph.get_option('window_size')}) finally: @@ -393,6 +398,7 @@ def main(top_block_cls=${class_name}, options=None): % if flow_graph.get_option('run_options') == 'prompt': tb.start(${ flow_graph.get_option('max_nouts') or '' }) + tb.flowgraph_started.set() ${'snippets_main_after_start(tb)' if snippets['main_after_start'] else ''} % for m in monitors: % if m.params['en'].get_value() == 'True': @@ -407,6 +413,7 @@ def main(top_block_cls=${class_name}, options=None): ## ${'snippets_main_after_stop(tb)' if snippets['main_after_stop'] else ''} % elif flow_graph.get_option('run_options') == 'run': tb.start(${flow_graph.get_option('max_nouts') or ''}) + tb.flowgraph_started.set() ${'snippets_main_after_start(tb)' if snippets['main_after_start'] else ''} % for m in monitors: % if m.params['en'].get_value() == 'True': diff --git a/core/generator/top_block.py b/core/generator/top_block.py index ff145c0..0322db5 100644 --- a/core/generator/top_block.py +++ b/core/generator/top_block.py @@ -163,8 +163,8 @@ class TopBlockGenerator(object): imports.append('import os') imports.append('import sys') - if fg.get_option('thread_safe_setters'): - imports.append('import threading') + # Used by thread_safe_setters and startup Event + imports.append('import threading') def is_duplicate(l): if (l.startswith('import') or l.startswith('from')) and l in seen: