Hi, 2014-07-04 1:19 GMT+02:00 Guido van Rossum <[email protected]>: > There's also the solution that was proposed a long time ago but never > implemented (because it's using a somewhat complex heuristic): occasionally > remove cancelled timers from the heapq. This is what pyftpdlib uses.
This can be more expensive than just clearing references in .cancel(). > I've got a feeling that occasionally it might be useful to have the > callback+args show up in a handler's repr(), even if it is cancelled, but > I'm not sure how valuable that is in practice. In debug mode, the traceback where a Handle was created is now stored in a Handle object. We can enhance repr(Handle) to show the most recent frame where the object was created, "filename:lineno" or even the content of the line. The line content is already stored in the _source_traceback list. IMO it's enough to identify a Handle object. IMO it's enough, so it's fine to clear the reference to callback and args on Handle.cancel(). Victor
