分类: Python/Ruby
2008-03-28 14:23:23
在阶段性处理事物后, 生成器会保留现场,轮循到其他现场,这样达到类似并发的效果。
要求每个事物处理时间很短,多个事物交替执行,事物之间最好没有同步操作
应用领域:大量需要及时响应,但是计算量很少的应用
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