Chinaunix首页 | 论坛 | 博客
  • 博客访问: 113572
  • 博文数量: 15
  • 博客积分: 2010
  • 博客等级: 大尉
  • 技术积分: 425
  • 用 户 组: 普通用户
  • 注册时间: 2007-04-01 14:51
文章分类

全部博文(15)

文章存档

2013年(4)

2011年(1)

2010年(2)

2009年(2)

2008年(6)

我的朋友

分类: 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

阅读(1928) | 评论(0) | 转发(0) |
0

上一篇:python多线程模型问题

下一篇:链接收藏贴

给主人留下些什么吧!~~