生成器
定义:在Pythpn中,一边循环一边计算的机制,成为生成器 generator
创建生成器,只需把列表生成式[ ]改成( )
L = (x for x in range(3))直接打印L出现生成器,如果要打印每个元素可以通过next()函数获得生成器的下个返回值,当计算到最后一个没有更多元素时报错。
如果函数中出现yield,就是生成器。
x 影响*导入
xx避免与关键字冲突
__xx私有
xx魔法方法
xx公有
生成器不仅记住数据状态,还记住控制状态。
特点:节约内存
迭代器
可迭代对象:能用for 循环的
(列表,字典,元组,字符串,集合)
判断一个对象是否可迭代,用isinstance
判断一个对象是否可迭代,用iterable
迭代器
能用next()函数的叫迭代器
生成器一定是迭代器,可迭代对象不一定是迭代器,例如空列表
判断一个对象是不是迭代器用from collections import Iterator
把可迭代对象转成迭代器用iter()函数
可作用于for循环的对象都是可迭代对象
可作用于next()函数的对象都是迭代器
闭包
概念:函数里有函数,并用到外部函数的变量
闭包具有提高代码可复用性的作用
闭包优化了变量
闭包引用了外部函数的局部变量,外部函数的局部变量没有及时释放,消耗内存
进程
编写完的代码没运行时时程序
fork()函数调用一次返回两次,子进程返回0,父进程返回子进程的ID,子进程调用getppid()可拿到父进程ID
父进程,子进程执行顺序没有规律,取决于操作系统的调用
apply_async:使用非阻塞方式调用func(并行执行,堵塞方式必须等待上一个进程退出才能执行下一个进程)apply:使用阻塞方式调用func
close():关闭Pool,使其不再接受新的任务
terminate():不管任务是否完成,立即终止
线程
使用threading模块
使用多线程并发的操作,花费时间要短
创建好的线程,需要调用start()方法来启动
主线程会等待所有的子线程结束后才结束
多线程开发中,全局变量是多个线程都共享的数据,而局部变量是各自线程的,非共享的
queue队列(先进先出)
网友评论