小白的Python之路 day4 生成器并行运算详解编程语言
2023-06-13 09:20:36 时间
我们已经明白生成器内部的结构,其实就是通过像函数这样的东西实现的!
多线程和单线程:简单来说多线程就是并行运算,单线程就是串行运算
二.生成器执行原理第一步:生成一个生成器
第二步:执行第一个next方法,开始调用函数,执行到yield时中断,把返回值返回给变量(moon_cake):
下面有next有几次执行几次这样的返回,但是返回的值是none
从上面可以看出send()和__next__()方法的区别:
1.__next__()只是调用这个yield,也可以说成是唤醒yield,但是不不会给yield传值。
2.send()调用这个yield或者说唤醒yield同时,也活给yield传一个值。
3.使用send()函数之前必须使用__next__(),因为先要中断,当第二次调用时,才可传值。
为什么给吃月饼的人传值时,必须先执行__next__()方法?
如果不执行一个__next__()方法,只是把函数变成一个生成器,你只有__next__()一下,才能走到第一个yield,然后就返回了,调用下一个send()传值时,才会发月饼.
上面 noon_cakes()开始执行时,
单线程通过生成器可以进行并行效果,原理(实际上还是串行的,但是因为我在不同的角色之间进行切换,并且因为运行速度特别快,你感觉上是并行的)
这实际上是异步IO的雏形,单线程向的并行效果,称之为协程(协程比线程更小的一个单位,他寄生在线程里)
以后还会具体讲协程,这里只是提一下,协程还是很牛x的.
12244.html
c相关文章
- lambda python表达式_Python的条件表达式和lambda表达式实例
- python-Python与MongoDB数据库-MongoDB数据库的基本知识
- python连接Oracle数据库的代码详解编程语言
- python计算文件的md5值详解编程语言
- python获取本机网卡的mac地址详解编程语言
- python监控本机cpu的利用百分比情况详解编程语言
- python播放wav音频文件代码详解编程语言
- Python实现http文件下载详解编程语言
- python检测远程udp端口是否打开详解编程语言
- python 获取mac地址的两种方法详解编程语言
- Python开发系列课程(5) – 玩转PyCharm(上)详解编程语言
- Python错误、调试和测试——学习笔记详解编程语言
- python学习笔记之运算符详解编程语言
- python全栈开发-Day7 文件处理详解编程语言
- Python学习:1.快速搭建python环境详解编程语言
- python装饰器+递归+冒泡排序详解编程语言
- python中一些内置函数实例详解编程语言
- python_day20_面向对象编程2详解编程语言
- 如何在文本文件中控制字符的处理(Python)详解编程语言
- python tornado 操作 mysql详解编程语言
- Linux VIM python 自动补全插件:pydiction详解编程语言
- python闭包的作用详解编程语言
- python中format函数详解编程语言
- Python面试笔试题记录详解编程语言
- python的select服务端的代码和客户端的代码详解编程语言