php中yield的用法

2021-09-24 09:43:52 字數 1405 閱讀 4137

之前有聽過php 中自身也有協程,檢視找了下並學習。

demo已上傳 我的github筆記

解決執行記憶體的瓶頸,php程式中的變數儲存在記憶體中,之前有遇到過讀取excel檔案時候,會出現記憶體不足,出現:

fatal error: allowed memory size of ****** bytes
所以會設定php 最大執行記憶體的設定:ini_set('memory_limit', '200m')但是當我們讀取5g 這麼大的檔案的時候,我們執行記憶體可能就吃不消了,所以會選擇yield

執行:

<?php 

時間是一樣的。如果採用yield:

時間則間隔一秒鐘,所以通過yield 的例子知道,不是像第乙個例子中把for 迴圈的內容儲存在記憶體中,而是乙個乙個消耗。

建立乙個txt 檔案寫入:

第1行

第2行第3行

第4行第5行

第6行第7行

第8行

<?php 

function

readtxt()

fclose

($handle);

}foreach

(readtxt()

as$key

=>

$value

)

用php 讀取檔案,則是一行一行的讀取

到這邊,大概知道了yield 的作用了,之後咱再深入

參考文章

Python中的yield用法

在python中,我們將帶有 yield 的函式稱之為 generator 生成器 generator可以一邊迴圈一邊計算,是可迭代物件,也就是說可以使用for迴圈來迭代出generator的各個值。一般為了說明generator,都會使用斐波那契數列來舉例,這裡也不例外 如結果所示,呼叫 fab ...

Python中的yield用法

yield關鍵字用來定義生成器 generator 其具體功能是可以當return使用,從函式裡返回乙個值,不同之處是用yield返回之後,可以讓函式從上回yield返回的地點繼續執行。也就是說,yield返回函式,交給呼叫者乙個返回值,然後再 瞬移 回去,讓函式繼續執行,直到嚇一條yield語句再...

python中 yield的用法

接下來是正題 首先,如果你還沒有對yield有個初步分認識,那麼你先把yield看做 return 這個是直觀的,它首先是個return,普通的return是什麼意思,就是在程式中返回某個值,返回之後程式就不再往下執行了。看做return之後再把它看做乙個是生成器 generator 的一部分 帶y...