if not _thread:
return
_MAX_COUNT = 100
+ t0 = time.monotonic()
for count in range(_MAX_COUNT):
values = _thread._count(), threading._dangling
if values == original_values:
break
time.sleep(0.01)
gc_collect()
- # XXX print a warning in case of failure?
+ else:
+ dt = time.monotonic() - t0
+ print("Warning -- threading_cleanup() failed to cleanup %s threads "
+ "after %.0f sec (count: %s, dangling: %s)"
+ % (values[0] - original_values[0], dt,
+ values[0], len(values[1])),
+ file=sys.stderr)
def reap_threads(func):
"""Use this function when threads are being used. This will