生成器;协程

生成器是一类特殊的迭代器

如果一个函数中有yield语句,那么这个函数就不在是普通函数,而是一个生成器模板

如果在调用函数的时候,发现函数中有yield,此时不再是调用函数了,而是创建一个生成器对象

生成器可以让一个函数暂停

for循环内部处理异常

while循环直接抛出异常

创建生成器方法

方法一

只要把一个列表生成式的 [ ] 改成 ( )

方法二

yield a #如果一个函数中有yield语句,那么这个函数就不在是普通函数,而是一个生成器模板

#如果在调用函数的时候,发现函数中有yield,此时不再是调用函数了,而是创建一个生成器对象

协程

协程 切换消耗资源少

# 并行(真的多任务)

# 并发(假的多任务)--->使用yield完成的多任务

1、进程是资源分配的单位

2、线程是操作系统调度的单位

3、进程切换需要的资源最大,效率很低

4、线程切换需要的资源一般,效率一般(不考虑GIL)

5、协程切换任务资源很小,效率高

6、多进程、多线程根据cpu核数不一样可能是并行的,但是协程是在一个线程中 所以是并发

使用如下命令安装greenlet模块:

sudo pip3 install greenlet   或以管理员身份进入输入 pip3 install greenlet

greenlet依次运行

安装

pip3 install gevent

能够自动切换任务的模块gevent

gevent检测耗时作用

你可能感兴趣的:(生成器;协程)