1、迭代器和生成器的区别
答:迭代器是一个可以记住遍历的位置的对象。迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束,迭代器只能往前不会后退。
可迭代对象有:列表、元组、字典、字符串、
整数和布尔型不是可迭代对象。
迭代器的作用:在迭代一个可迭代对象的过程种,实际上就是先获取该对象提供的一个迭代器,然后通过这个迭代器来依次获取对象中的每个数据。所以迭代器在底层实现了一个_iter_方法和next方法;所以通过iter方法获取迭代对象的迭代器,然后对获取到的迭代器通过不断使用next方法来获取下一条数据。当迭代器完最后一条数据之后,再次调用next方法就会抛出StopIteration的异常,来告诉我们所有数据迭代完成,不用再执行next方法。for循环也是个迭代器。
生成器:是一种特殊的迭代器。
创建的方法:
一、把一个列表生成式的[]改成(),就是生成器。
# 参考列表生成式: li=[x*2forxinrange(6)]
# 把[] 改为() :就是一个简单的列表生成器:gen=(x*2forxinrange(6)) 可以通过for循环遍历。
二、使用yield关键字的函数不再是函数,而是生成器,因此可以用yield创建生成器。
唤醒生成器的方法有:next方法和send方法
2、进程、线程和协程
进程:一个程序运行起来之后,代码和用到的资源,就是进程。进程式操作系统分配资源的基本单位。
使用multiprocessing模块导入process来创建进程实例,用start()方法启动进程,