__del__ method of utils.ThreadedDict is not needed or should use weakref instead.
Because ThreadedDict.instances has kept a reference of ThreadedDict instances, the `__del_method will not automatically be called, I also think we should not directly override threading.local'sdel`.
If we use weakref, it can be like this:
method will not automatically be called, I also think we should not directly override threading.local's
_instances = set()
for d in ThreadedDict._instances: