Python generator

Başlatan fghty, 23 Temmuz 2012 - 21:06:38

« önceki - sonraki »

0 Üyeler ve 1 Ziyaretçi konuyu incelemekte.

fghty

İnternette kodlara bakarken aşağıdaki gibi bi kod buldum. Belirttiğimiz dosyada g = grep(f, "deneme") içindeki yazıyı eklediğimizde hemen algılıyor ve ekrana yazıyor. Bu işlemde döngü kullanılmasına rağmen billgisayarı çok kasmıyor. Bunun nedeni yield gibi. Benim sorum bu işlemi yield kullanmadan da yapabilir miyiz?

import time
import re

def follow(fname):
    f = file(fname)
    f.seek(0,2) # go to the end
    while True:
        l = f.readline()
        if not l: # no data
            time.sleep(.1)
        else:
            yield l

def grep(lines, pattern):
    regex = re.compile(pattern)
    for l in lines:
        if regex.match(l):
            yield l

def printer(lines):
    for l in lines:
        print l.strip()

f = follow(r'C:\d.txt')
g = grep(f, "deneme")
p = printer(g)

for i in p:
    pass