3 ms·
Does this incur a performance penalty? What I mean is, could you theoretically write code this way with no ill effects? Not that you’d want to, but it’s a fun
by sillysaurusx 6y ago
Does this incur a performance penalty? What I mean is, could you theoretically write code this way with no ill effects?
Not that you’d want to, but it’s a fun thought experiment.
- gaogaotiantian 6y agolol, thank you for the attention. Yes this will incur a performance penalty, and is similar to what "pdb" introduces(if your are familiar with pdb). Most of the python debugger did single step or breakpoint feature in this way. And it's a little more than inspect and frames. Note that it is much easier to do watch("a") than watch(a), but it's slightly less intuitive. So I also did some AST hack to make watch(a) possible :)
- sillysaurusx 6y agoPlease make more stuff :) Are you on Twitter or anything? I'd like to follow your work. (Put some info in your HN profile!) I noticed that watchpoints doesn't work in the REPL, and since I live in the REPL, it limits my usage somewhat. But after digging into the code, I'm not quite sure if it even makes sense in the context of <stdin>... I was also -- as the other commenter said, excuse the french -- fucking amazed that this works great: from watchpoints import watch a = [] watch(a) a.append(1) # Trigger a = {} # Trigger def qq(): global a a = 99 # Trigger qq() Did not expect that.
- gaogaotiantian 6y agoI'm not on twitter, but I do have a twitter account for my other project viztracer @viztracer. All my work is on my github if you are interested :) watchpoints does not work in the REPL. REPL is a more complicated environment. I don't think pdb will work in REPL either. watchpoints works very intuitively. It has some dirty magic that made it work in some way that you need but not expect.