def invalidate_module(name):
global modules
global __debug
for item in modules.keys():
if item == name or item.startswith(name+'.'):
dprint('Remove {} from pupyimporter.modules'.format(item))
del modules[item]
for item in sys.modules.keys():
if not (item == name or item.startswith(name+'.')):
continue
mid = id(sys.modules[item])
dprint('Remove {} from sys.modules'.format(item))
del sys.modules[item]
if hasattr(pupy, 'namespace'):
dprint('Remove {} from rpyc namespace'.format(item))
pupy.namespace.__invalidate__(item)
if __debug:
for obj in gc.get_objects():
if id(obj) == mid:
dprint('Module {} still referenced by {}'.format(
item, [ id(x) for x in gc.get_referrers(obj) ]
))
gc.collect()
评论列表
文章目录