Mahmoud Hashemi added the comment:

Hey all, great to see this being worked on so diligently for so long. Having 
worked in this area for a while (at home and at PayPal), we've got a few 
learnings to share:

1) linecache is textbook not-threadsafe. For example, 
https://hg.python.org/cpython/file/default/Lib/linecache.py#l38

For a lightweight traceback wrapper to be concurrency-friendly, we've had to 
catch KeyErrors, like so: 
https://github.com/mahmoud/boltons/blob/master/boltons/tbutils.py#L115

It's kind of a blanket approach, but maybe we could make a separate issue and 
help out with a linecache refresh?

2) We use something like (filename, lineno) in our DeferredLine class, but for 
very lightweight areas (e.g., greenlet creation) we just save a reference to 
the code object, as the additional attribute accesses do end up showing up in 
the profiles.

3) Generally we've found the APIs in TracebackInfo here to be pretty 
sufficient/functional: 

https://github.com/mahmoud/boltons/blob/master/boltons/tbutils.py#L134

Let me know if you've got any questions on that, and keep up the good work!

----------
nosy: +mahmoud

_______________________________________
Python tracker <rep...@bugs.python.org>
<http://bugs.python.org/issue17911>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com

Reply via email to