thanks. so not a lot of (reliable) luck yet with deleting modin/ray packages to force their unloading but after some more tests i seem to have ray.init() and ray.shutdown() working reliably as long as they are called appropriately within a single notebook, before activating in another
# one-time startup and modin import
# keep modin and pandas modules separated with aliases
import os
os.environ["MODIN_ENGINE"] = "ray" # Modin will use Ray
#os.environ["MODIN_ENGINE"] = "dask" # Modin will use Dask
import psutil
num_cpus = psutil.cpu_count()
# num_cpus = 4 # limit CPUs to try and cut overhead if workloads not that heavy
num_gpus = 0
import ray
# ray.init() with no spec of CPU count will automagically figure out your CPUs
# however, too many CPUs might be an unneeded overhead expense
# try operating with fewer cpus
ray.init(num_cpus=num_cpus, num_gpus=num_gpus, ignore_reinit_error=True)
del num_cpus, num_gpus
import modin.pandas as mpd
import pandas as pd
pandas_impl_module = mpd # change dynamically to experiment w pandas vs modin, write code to this variable
# SHUTDOWN
ray.shutdown()