Python论坛  - 讨论区

标题:[python-chinese] 从并发的角度看python2.5的yield

2006年09月04日 星期一 22:19

Linker Lin linkerlin88在gmail.com
星期一 九月 4 22:19:49 HKT 2006

难以理解的描述:
1。调用含有yeild的函数F返回一个生成器G。
2。调用者调用生成器的G.next()方法,
    可以推动F执行,直到遇到到yield并返回yield关键字右边的值,
    下次调用G.next(V)的时候,V会被付给yield
3。第一次调用next()不可传值,因为没有对象接收

简单的说:
迁移:协程--主动交出执行权的线程
1。含有yield的函数可理解成协程的入口函数,
2。调用这个函数返回一个协程对象(也就是生成器)
3。调用协程对象的next()方法将把执行权交给协程
4。有参数的next(V),将把V传给协程,协程通过对yield取值获得V
5。协程遇到yield释放执行权,并返回右边表达式的值,
6。协程下次获得执行权时,如果有传入值,则把传入值付给yield语句
7。yield相当于一个显示的交出线程(协程)执行权的的语句
8。当该含有yield的函数结束时,协程结束,


-- 
Linker M Lin
linkerlin88在gmail.com
linker.m.lin在gmail.com
  ※※※※※※※※※
  ※※我思故我在※※
  ※※※※※※※※※

-- 
Linker M Lin
linkerlin88在gmail.com
linker.m.lin在gmail.com
  ※※※※※※※※※
  ※※我思故我在※※
  ※※※※※※※※※
-------------- 下一部分 --------------
一个HTML附件被移除...
URL: http://python.cn/pipermail/python-chinese/attachments/20060904/83145d4a/attachment.html 

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2006年09月04日 星期一 22:27

limodou limodou在gmail.com
星期一 九月 4 22:27:51 HKT 2006

On 9/4/06, Linker Lin <linkerlin88在gmail.com> wrote:
> 难以理解的描述:
> 1。调用含有yeild的函数F返回一个生成器G。
> 2。调用者调用生成器的G.next()方法,
>     可以推动F执行,直到遇到到yield并返回yield关键字右边的值,
>     下次调用G.next(V)的时候,V会被付给yield
> 3。第一次调用next()不可传值,因为没有对象接收
>
> 简单的说:
> 迁移:协程--主动交出执行权的线程
> 1。含有yield的函数可理解成协程的入口函数,
> 2。调用这个函数返回一个协程对象(也就是生成器)
> 3。调用协程对象的next()方法将把执行权交给协程
> 4。有参数的next(V),将把V传给协程,协程通过对yield取值获得V
> 5。协程遇到yield释放执行权,并返回右边表达式的值,
> 6。协程下次获得执行权时,如果有传入值,则把传入值付给yield语句
> 7。yield相当于一个显示的交出线程(协程)执行权的的语句
> 8。当该含有yield的函数结束时,协程结束,
>
>
generator可以用来进行协程编程,但不是协程,看这里在PEP 342上:

By adding a few simple methods to the generator-iterator type, and
    with two minor syntax adjustments, Python developers will be able
    to use generator functions to implement co-routines and other forms
    of co-operative multitasking.

send(V)不是next(V)

-- 
I like python!
My Blog: http://www.donews.net/limodou
UliPad Site: http://wiki.woodpecker.org.cn/moin/UliPad
UliPad Maillist: http://groups.google.com/group/ulipad

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2006年09月04日 星期一 22:39

Linker Lin linkerlin88在gmail.com
星期一 九月 4 22:39:04 HKT 2006

多谢指正!

On 9/4/06, limodou <limodou在gmail.com> wrote:
>
> On 9/4/06, Linker Lin <linkerlin88在gmail.com> wrote:
> > 难以理解的描述:
> > 1。调用含有yeild的函数F返回一个生成器G。
> > 2。调用者调用生成器的G.next()方法,
> >     可以推动F执行,直到遇到到yield并返回yield关键字右边的值,
> >     下次调用G.next(V)的时候,V会被付给yield
> > 3。第一次调用next()不可传值,因为没有对象接收
> >
> > 简单的说:
> > 迁移:协程--主动交出执行权的线程
> > 1。含有yield的函数可理解成协程的入口函数,
> > 2。调用这个函数返回一个协程对象(也就是生成器)
> > 3。调用协程对象的next()方法将把执行权交给协程
> > 4。有参数的next(V),将把V传给协程,协程通过对yield取值获得V
> > 5。协程遇到yield释放执行权,并返回右边表达式的值,
> > 6。协程下次获得执行权时,如果有传入值,则把传入值付给yield语句
> > 7。yield相当于一个显示的交出线程(协程)执行权的的语句
> > 8。当该含有yield的函数结束时,协程结束,
> >
> >
> generator可以用来进行协程编程,但不是协程,看这里在PEP 342上:
>
> By adding a few simple methods to the generator-iterator type, and
>     with two minor syntax adjustments, Python developers will be able
>     to use generator functions to implement co-routines and other forms
>     of co-operative multitasking.
>
> send(V)不是next(V)
>
> --
> I like python!
> My Blog: http://www.donews.net/limodou
> UliPad Site: http://wiki.woodpecker.org.cn/moin/UliPad
> UliPad Maillist: http://groups.google.com/group/ulipad
> _______________________________________________
> python-chinese
> Post: send python-chinese在lists.python.cn
> Subscribe: send subscribe to python-chinese-request在lists.python.cn
> Unsubscribe: send unsubscribe to  python-chinese-request在lists.python.cn
> Detail Info: http://python.cn/mailman/listinfo/python-chinese




-- 
Linker M Lin
linkerlin88在gmail.com
linker.m.lin在gmail.com
  ※※※※※※※※※
  ※※我思故我在※※
  ※※※※※※※※※
-------------- 下一部分 --------------
一个HTML附件被移除...
URL: http://python.cn/pipermail/python-chinese/attachments/20060904/8ddba28d/attachment.htm 

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

如下红色区域有误,请重新填写。

    你的回复:

    请 登录 后回复。还没有在Zeuux哲思注册吗?现在 注册 !

    Zeuux © 2025

    京ICP备05028076号