Source code for snudda.utils.cleanup

[docs] def cleanup_memory(d_view, variable_list): """ Clear variables in variable_list on workers specified by d_view. Args: d_view : ipyparallel direct view variable_list : list of variables to clear """ for var in variable_list: d_view.execute(f"if '{var}' in locals(): del {var}")
# d_view.execute(f"{var}=None") # Cleans up memory on workers after execution
[docs] def cleanup(rc, state): """ When place, detect, prune are run one after the other, we do not need to keep them all in memory at the same time. As one finishes, we can clear the memory. Args: rc : ipyparallel remote client state : State to free memory (e.g. "place", "detect", "project", "prune" """ if rc is not None: # Check if the client is still active try: if hasattr(rc, '_closed') and rc._closed: return # Alternative check: try to access a property that would fail if closed _ = rc.ids except (RuntimeError, AttributeError): # Client is closed or invalid, skip cleanup return d_view = rc.direct_view(targets='all') var_lookup = {"place": ["inner_mask", "sm"], # region_mesh_vedo.py "detect": ["min_max", "result", "sd"], "project": [], # Currently does not support parallel execution "prune": ["syn_before", "syn_after", "merge_result_syn", "merge_result_gj", "sp"]} if state in var_lookup: cleanup_memory(d_view, var_lookup[state]) else: print(f"cleanup: Unknown state: {state}")