使用生成器实现轻量级线程实例


                使用生成器实现轻量级线程实例
在阶段性处理事物后, 生成器会保留现场,轮循到其他现场,这样达到类似并发的效果。
  要求每个事物处理时间很短,多个事物交替执行,事物之间最好没有同步操作
应用领域:大量需要及时响应,但是计算量很少的应用
from __future__ import generators
import sys, time
threads = []
TOTALSWITCHES = 10**6
NUMTHREADS    = 10**5
def null_factory():
    def empty():
        while 1:
            #do some thing
            yield None
    return empty()
def quitter():
    for n in xrange(TOTALSWITCHES/NUMTHREADS):
        yield None
def scheduler():
    global threads
    try:
        while 1:
            for thread in threads: thread.next()
    except StopIteration:
        pass
if __name__ == "__main__":
    for i in range(NUMTHREADS):
        threads.append(null_factory())
    threads.append(quitter())
    starttime = time.clock()
    scheduler()
    print "TOTAL TIME:    ", time.clock()-starttime
    print "TOTAL SWITCHES:", TOTALSWITCHES
    print "TOTAL THREADS: ", NUMTHREADS