# -*- coding:utf-8 -*-
import random
import threading
import string
import time
t1 = time.time()
def write(x):
with open('a.txt','a+')as a:
a.write(x + '||')
def run():
for x in range(10000000):
strs = str(random.randint(1000,2000)) +random.choice(string.ascii_letters)*10
write(strs)
for x in range(10):
t = threading.thread(target=run)
t.start()
t2 = time.time()
print(t2 - t1)
# -*- coding:utf-8 -*-
def readbooks(f, newline):
# f為傳入的檔名,newline為分隔符
buf = ""
# 快取,處理已經讀出來的資料量
while 1:
while newline in buf:
# 快取中的資料是否存在分隔符
pos = buf.index(newline)
# 如果存在就找到字元的位置,比如0或者1或者2
yield buf[:pos]
# 暫停函式,返回快取中的從頭到字元的位置
buf = buf[pos + len(newline):]
# 快取變成了,字元的位置到末尾
chunk = f.read(2010 * 10)
# 讀取2010*10的字元
if not chunk:
# 已經讀取到了檔案結尾
yield buf
break
buf += chunk
# 加到快取
with open('a.txt','r')as f:
for line in readbooks(f,'||'):
print(line)
如何使用PHP的生成器yield處理大量資料業務
官方解釋yield yield生成器是php5.5之後出現的,官方文件這樣解釋 yield提供了一種更容易的方法來實現簡單的迭代物件,相比較定義類實現 iterator 介面的方式,效能開銷和複雜性大大降低。生成器的核心是乙個yield關鍵字,乙個生成器函式看起來像乙個普通的函式,不同的是 普通函式...
C 中的 yield 使用
yield是c 為了簡化遍歷操作實現的語法糖,我們知道如果要要某個型別支援遍歷就必須要實現系統介面ienumerable,這個介面後續實現比較繁瑣要寫一大堆 才能支援真正的遍歷功能。舉例說明 using system using system.collections.generic using sy...
yield迭代器的使用
class program foreach var item in query console.writeline 未使用迭代器 end foreach var item in query console.writeline 使用迭代器 end console.readkey public stat...