From 8c97f7bbb3e1cebbf11cad94e2bfbcc8b14c5d1b Mon Sep 17 00:00:00 2001 From: Tyler Goodlet Date: Thu, 23 Jul 2020 13:14:15 -0400 Subject: [PATCH] Create runtime variables --- tractor/_state.py | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/tractor/_state.py b/tractor/_state.py index d624fc9..2a18a4c 100644 --- a/tractor/_state.py +++ b/tractor/_state.py @@ -3,10 +3,15 @@ Per process state """ from typing import Optional from collections import Mapping +import multiprocessing as mp import trio _current_actor: Optional['Actor'] = None # type: ignore +_runtime_vars = { + '_debug_mode': False, + '_is_root': False, +} def current_actor() -> 'Actor': # type: ignore @@ -36,3 +41,20 @@ class ActorContextInfo(Mapping): except RuntimeError: # no local actor/task context initialized yet return f'no {key} context' + + +def is_main_process() -> bool: + """Bool determining if this actor is running in the top-most process. + """ + return mp.current_process().name == 'MainProcess' + + +def debug_mode() -> bool: + """Bool determining if "debug mode" is on which enables + remote subactor pdb entry on crashes. + """ + return _runtime_vars['_debug_mode'] + + +def is_root_process() -> bool: + return _runtime_vars['_is_root']