[Python-Dev] PEP 3152 and yield from Future() (original) (raw)

andrew.svetlov at gmail.com andrew.svetlov at gmail.com
Thu Apr 23 17:22:27 CEST 2015


I can live with cocall fut() but the difference between data = yield from loop.sock_recv(sock, 1024) and data = cocall (loop.sock_recv(sock, 1024))() frustrates me very much.

— Sent from Mailbox

On Thu, Apr 23, 2015 at 4:09 PM, Victor Stinner <victor.stinner at gmail.com> wrote:

(I prefer to start a new thread, the previous one is too long for me :-)) Hi, I'm still trying to understand how the PEP 3152 would impact asyncio. Guido suggests to replace "yield from fut" with "cocall fut()" (add parenthesis) and so add a cocall() method to asyncio.Future. Problem: PEP 3152 says "A cofunction (...) does not contain any yield or yield from expressions". Currently, Future.iter() is implemented using yield: def iter(self): if not self.done(): self.blocking = True yield self # This tells Task to wait for completion. assert self.done(), "yield from wasn't used with future" return self.result() # May raise too. From my understanding, the PEP 3151 simply does not support asyncio.Future. Am I right? How is it possible to suspend a cofunction if it's not possible to use yield? If waiting for a future in a cofunction is not supported, the PEP 3151 is useless for asyncio, since asyncio completly relies on futures. Victor


Python-Dev mailing list Python-Dev at python.org https://mail.python.org/mailman/listinfo/python-dev Unsubscribe: https://mail.python.org/mailman/options/python-dev/andrew.svetlov%40gmail.com -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://mail.python.org/pipermail/python-dev/attachments/20150423/faaea7ec/attachment.html>



More information about the Python-Dev mailing list