How to get the list of all initialized objects and function definitions alive in python? How to get the list of all initialized objects and function definitions alive in python? python python

How to get the list of all initialized objects and function definitions alive in python?


Yes.

>>> import gc>>> gc.get_objects()

Not that you'll find that useful. There is a lot of them. :-) Over 4000 just when you start Python.

Possibly a bit more useful is all the variables active locally:

>>> locals()

And the one active globally:

>>> globals()

(Note that "globally" in Python isn't really global as such. For that, you need the gc.get_objects() above, and that you are unlikely to ever find useful, as mentioned).


The function gc.get_objects() will not find all objects, e.g. numpy arrays will not be found.

import numpy as npimport gca = np.random.rand(100)objects = gc.get_objects()print(any[x is a for x in objects])# will not find the numpy array

You will need a function that expands all objects, as explained here

# code from https://utcc.utoronto.ca/~cks/space/blog/python/GetAllObjectsimport gc# Recursively expand slist's objects# into olist, using seen to track# already processed objects.def _getr(slist, olist, seen):  for e in slist:    if id(e) in seen:      continue    seen[id(e)] = None    olist.append(e)    tl = gc.get_referents(e)    if tl:      _getr(tl, olist, seen)# The public function.def get_all_objects():  """Return a list of all live Python  objects, not including the list itself."""  gcl = gc.get_objects()  olist = []  seen = {}  # Just in case:  seen[id(gcl)] = None  seen[id(olist)] = None  seen[id(seen)] = None  # _getr does the real work.  _getr(gcl, olist, seen)  return olist

Now we should be able to find most objects

import numpy as npimport gca = np.random.rand(100)objects = get_all_objects()print(any[x is a for x in objects])# will return True, the np.ndarray is found!