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>
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4