可迭代对象

创建对象的类中有__iter__方法。

它就是可迭代对象。

所谓的可迭代对象,就是可以被遍历的对象。

如果希望遍历能够获取到值,需要让这个__iter__方法返回一个迭代器对象

 

迭代器

创建该对象的类中存在__iter__方法,且存在__next__方法

则该类的实例对象为迭代器对象。

迭代器可以通过next(迭代器)获取返回值,也可通过 迭代器.__next__() 获取返回值

 

生成器

是一种特穆殊的迭代器

它可迭代,但是没有__iter__  __next__方法

如果类中存在yield,则该类创建的对象是生成器

可通过 next(生成器对象) 获取yield 后面根的值

也可以通过 生成器对象.send(值) 把这个值赋给 yield 左边等号的变量,例如 name = yield username

 

协程

利用yield可以实现协程的功能

协程是用户态的多线程,不存在纯正多线程的那种抢资源的情况

什么时候启动协程完全由程序员来控制

协程的高级用法通常使用gevent来完成

例子代码

python中可迭代对象,迭代器,生成器,协程_多线程

首先安装gevent

pip install gevent

然后在代码中导入

import gevent

当代码中存在耗时操作时,会自动切换gevent对象

1,通过gevent.spawn(执行函数名,参数1,参数2)创建gevent对象

2,通过gevent.joinall(gevent对象的列表)让这些对象运转起来

3,通过导入monkey让耗时操作可以被捕获

monkey.patch_all()