stackless python hackysack问题续

 经过一天的测试和思考。

 终于搞明白了一点,

 如果协程向自己发送消息

 那么不但该协程会立即退出。

而且主进程也会退出。

原因估计是stackless python认为遇到了消息循环

该异常不可以被捕获。(但是发送失败的异常可以捕获)

 

以下为测试实例

#coding=gbk
#测试一下多个微线程的情况
import stackless
import sys
import time

count=0

#创建三个通道
ch1 = stackless.channel()
ch2 = stackless.channel()



#创建函数

def f1():
    global count
    while 1:
    #while ch1.receive(): #blockhere
        msg=ch1.receive() #blockhere
        #print "recv 1"
        print "1recv %s" % msg
        if msg == 'exit':
          print "1 quit"
          time.sleep(1)
          break
        else:
          try:
           ch1.send("1")  
          except :
           print "error"
           ch2.send("2")
           

def f2():
    while 1:
        msg2=ch2.receive() #blockhere
        print "2recv %s" % msg2
        if msg2 == 'exit':
          print "2 quit"
          time.sleep(1)
          break       
        else:
          ch1.send("ok") 
      


#创建微线程
stackless.tasklet(f1)()
stackless.tasklet(f2)()

#初始化方法1
#ch1.send('0')
#初始化3
#stackless.tasklet(ch1.send)('2')

#启动微线程
stackless.run()

#初始化2
ch1.send('1')




 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值