On 8/22/2013 9:57 AM, Michael Torrie wrote:
On 08/22/2013 05:29 AM, Neal Becker wrote:
So my son is now spending his days on c# and .net. He's enthusiastic about
async and await, and said to me last evening, "I don't think python has anything
like that". I'm not terribly knowledgeable myself regarding async programming
(since I never need to use it). I did look at this:
http://tirania.org/blog/archive/2013/Aug-15.html
The iterator protocol, introduced in 2.2, was explicitly intended (by
Tim Peters) to replace many uses of synchonous callbacks.
This example from the blog, of callback replacement,
int sum_values (Hashtable hash)
{
int sum = 0;
hash.foreach ((key, value) => { sum += value; });
return sum;
}
is written in Python *much more generally* as
def sum(iterable):
sum = 0
for item in iterable:
sum += item
return sum
Notice that this is not limited to summing ints, nor to summing values
in a hash. sum(somedic.values()) does the specific task of summing hash
values.
Any time you use a GUI library, you can often use its own async
primitives (in fact you probably need to). For example glib from Gtk+
provides io wait primitives. Or if you want a completely asynchronous
programming experience from top to bottom, you can use python twisted.
There are also other libraries to do this.
Having first-class language support is certainly nice, and it would be
nice if Python had this. GvR himself agrees.
http://www.youtube.com/watch?v=sOQLVm0-8Yg
C#'s await was part of the early discussion about Python's new asynch
library. Last I knew, 'Tulip' uses callbacks at the lowest level, but
the user level uses generators and 'yield from'. I hope this makes in
into 3.4.
--
Terry Jan Reedy
--
http://mail.python.org/mailman/listinfo/python-list