php中yield的用法
之前有听过php 中自身也有协程,查看找了下并学习。
demo已上传 我的github笔记
yield 解决的问题
解决运行内存的瓶颈,php程序中的变量存储在内存中,之前有遇到过读取Excel文件时候,会出现内存不足,出现:
Fatal Error: Allowed memory size of xxxxxx bytes
所以会设置php 最大运行内存的设置: ini_set('memory_limit', '200M')
但是当我们读取5g 这么大的文件的时候,我们运行内存可能就吃不消了,所以会选择yield
初识Yield
运行:
<?php
function createRange($number){$data = [];for($i=0;$i<$number;$i++){$data[] = time();}return $data;
}
$data =createRange(10);
foreach($data as $value){sleep(1);//这里停顿1秒,我们后续有用echo $value.PHP_EOL;
}
时间是一样的。如果采用yield:
<?phpfunction createRange($number){for($i=0;$i<$number;$i++){yield time();}
}
$data =createRange(10);
foreach($data as $value){sleep(1);//这里停顿1秒,我们后续有用echo $value.PHP_EOL;
}
时间则间隔一秒钟,所以通过yield 的例子知道,不是像第一个例子中把for 循环的内容储存在内存中,而是一个一个消耗。
读取文件的例子
创建一个txt 文件写入:
第1行
第2行
第3行
第4行
第5行
第6行
第7行
第8行
<?php
function readTxt()
{# code...$handle = fopen("./test.txt", 'rb');while (feof($handle)===false) {# code...yield fgets($handle);}fclose($handle);
}foreach (readTxt() as $key => $value) {# code...sleep(1);echo $value;
}
用php 读取文件,则是一行一行的读取
到这边,大概知道了yield 的作用了,之后咱再深入
参考文章
大文件导入导出优化
php中yield的用法相关推荐
- Python中yield简单用法
Python中yield简单用法 你或许知道带有yield的函数在Python中被称之为generator,那何为 generator? 我们暂时抛开generator,先从一个常见编程题目开始,循序 ...
- C#中yield return用法分析
转载地址:https://www.jb51.net/article/54810.htm 这篇文章主要介绍了C#中yield return用法,对比使用yield return与不使用yield ret ...
- python中yield的用法(生成器的讲解)
2 理解说明yield与生成器 在Python中,使用yield的函数被称为生成器函数(generator function). 生成器有两种方法:next()和send(),都可以调用生成器 yie ...
- python中yield的用法
在 Python 开发中,yield 关键字的使用其实较为频繁,例如大集合的生成,简化代码结构.协程与并发都会用到它. 生成器 如果在一个方法内,包含了 yield 关键字,那么这个函数就是一个「生成 ...
- python yield 简单用法_python中 yield 的用法 (简单、清晰)
首先我要吐槽一下,看程序的过程中遇见了yield这个关键字,然后百度的时候,发现没有一个能简单的让我懂的,讲起来真TM的都是头头是道,什么参数,什么传递的,还口口声声说自己的教程是最简单的,最浅显易懂 ...
- python中yield的用法详解——最简单,最清晰的解释(转载)
首先,如果你还没有对yield有个初步分认识,那么你先把yield看做"return",这个是直观的,它首先是个return,普通的return是什么意思,就是在程序中返回某个值, ...
- python中 yield 的用法详解——最简单,最清晰的解释(排序节省内存消耗)
首先我要吐槽一下,看程序的过程中遇见了yield这个关键字,然后百度的时候,发现没有一个能简单的让我懂的,讲起来真TM的都是头头是道,什么参数,什么传递的,还口口声声说自己的教程是最简单的,最浅显易懂 ...
- python yield from_python中yield的用法以及和yield from的区别
看了大佬的博客很快就懂了. 由于最近接触了酷q机器人,搭建好了环境,配合NoneBot可以通过python代码自己写机器人功能. NoneBot是基于asyncio的,所以先通过yield来学习一点p ...
- python中yield的使用_python中yield的用法详解-转载
原文链接:https://blog.csdn.net/mieleizhi0522/article/details/82142856 ,今天在写python爬虫的时候,循环的时候用到了yield,于是搜 ...
- Python中yield的用法详解——最简单,最清晰的解释
yield关键字的使用 当函数中遇到yield关键字,类似于return代码会直接返回 当函数中使用yield关键字返回,那么在多此next中,从第二次开始,代码会从上一次结束的位置开始运行 首先,如 ...
最新文章
- 批量修改文件权限 和所有者 chown nobody:nobody * -R chmod 775 * -R
- X86中的RDTSC指令
- android r类 作用,Android 主项目和 Module 中 R 类的区别
- 自定义手势解锁锁控件
- 系统架构设计师考试4
- 三角形和矩形傅里叶变换_信号与系统:第三章傅立叶变换2.ppt
- html实现图片加载动画效果,HTML5+javascript实现图片加载进度动画效果
- 60-330-000-使用-窗口TopN分析与实现
- 实验五:编写、调试具有多个段的程序
- python下载网页歌词_利用Python网络爬虫抓取网易云音乐歌词
- 用goquery从国家统计局拉取最新省市区3级行政区划代码,生成SQL文件导入数据库
- 支付行业架构流程梳理
- gom及gee小白架设黑屏的原因以及个别装备地图不显示怎么办?
- LeetCode通关:哈希表六连,这个还真有点简单
- PHP开发小技巧①⑥—提取富文本字符串中的文本内容
- STM32基于HAL库自由启动和关闭定时器:
- kindle3折腾之修砖、修复“wifi unavailable”等总结
- Canvas颜色渐变效果
- 打开手机linux桌面,linux桌面
- LINUX 红帽8.2安装pycharm