Matthew Suozzo <matthew.suo...@gmail.com> added the comment:

One of the problems with my proposed solution that I glossed over was how and 
where to count the primitive call. If the primitive call is only registered on 
RETURN (i.e. after all yields), a generator that is incompletely exhausted 
would have 0 primitive calls. However if the primitive call is registered 
immediately when the call context is entered, the recorded call would be 
instantaneous (i.e. 0s duration) which could throw off the percall statistics.

Even with the incomplete generator case, I think registering the primitive call 
on RETURN is the best of the two options. Although seeing 2/0 for the call 
count when RETURN wasn't reached might seem odd, it lines up with a conceptual 
model of a coroutine: An iterator represents a function returning a sequence; 
Exhausting that iterator corresponds to the function call completing; 
Incompletely exhausting corresponds to an abbreviated/incomplete function call.

----------

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

Reply via email to