使用send唤醒生成器
如果一创建生成器就send会报错,因为没有yield,也没有ret去接收,但是可以send(None)
next 不可以传参数
send可以传递参数,使用yield接收
迭代器生成器总结
生成器是特殊的迭代器
保存生成数据的代码,而不是保存数值
生成使用yield来暂停,通过iter方法和next方法来实现继续
迭代器如何实现迭代iter方法和next方法实现的
减少内存空间,实现循环
使用yeild完成多任务
并行(真的多任务)多个任务,一个任务一个核
并发(假的多任务):多个任务,只有四个核,交替执行
import time
def task_1():
while True:
print("---1----")
time.sleep(0.1)
yield
def task_2():
while True:
print("---2----")
time.sleep(0.1)
yield
def main():
# 此时并非函数调用而是生成器
t1=task_1()
t2=task_2()
while True:
next(t1)
next(t2)
# 并行(真的多任务)多个任务,一个任务一个核
# 并发(假的多任务):多个任务,只有四个核,交替执行
if __name__ == '__main__':
main()
网友评论