It looks like the leftovers are all interned strings. These are not freed when you call Py_Finalize() because they must persist across multiple interpreter creations. The interned strings live as long as the process. Jeremy