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)

 

转载于:https://www.cnblogs.com/gsblog/p/3336568.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值