Python异步处理

回调函数是实现异步操作的常用手法

 

1、callback版本的示例,其中framework调用logic,在完成某些操作或者接收到信号后,用callback返回异步结果

#!/usr/bin/env python2.7

def framework(logic,callback):
        s=logic()
        print "[FX] logic:",s
        print "[FX] do something..."

        for i in xrange(1000000):
                a=i+1
        callback("async:"+s)

def logic():
        s="mylogic"
        return s

def callback(s):
        print s


framework(logic,callback)

 2、使用yield改进的blocking style版本:

#!/usr/bin/env python2.7
#-*- coding:utf8 -*-

def framework(logic):
        try:
                it = logic()
                s = next(it)

                print "[FX] logic:",s
                print "[FX] do something"

                f=open("test.txt",'w')
                for i in xrange(1000000000):
                        f.write(str(i)+'\n')
                f.close()

                it.send("async:" + s)
        except StopIteration:
                pass

def logic():
        s = "mylogic"
        r = yield s

        print r

framework(logic)

 

posted @ 2013-09-24 11:40  小郭学路  阅读(1807)  评论(0编辑  收藏  举报