欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

多协程实例分析(一)

发布时间:2025/4/16 编程问答 34 豆豆
生活随笔 收集整理的这篇文章主要介绍了 多协程实例分析(一) 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

下面的代码中,我们实现了时间限制函数。即如果join的协程超过了之后就会自己弹出来。(并抛出错误来!)
这个错误也很有意思,那就是这个东西本身 Timeout

import gevent import time from gevent import monkey from gevent import Timeout monkey.patch_all(select=False)def foo(second):print('%d is begining'% second)time.sleep(second)print('%d is end' % second)def geventCreate(count, timeLimit):WaitList = []timeout = Timeout(timeLimit)for i in range(count):WaitList.append(gevent.spawn(foo, i+1))print("before Join!")timeout.start()try:gevent.joinall(WaitList)except Timeout:print("Time out!")if __name__ == '__main__':geventCreate(5, 4)

上面代码的输出是:

before Join!
1 is begining
2 is begining
3 is begining
4 is begining
5 is begining
1 is end
2 is end
3 is end
4 is end
Time out!

从开头的地方可以看出来跟线程还是有点区别的。这里可以看这篇文~

这次比较奇怪的地方是,这个是按照顺序进行的操作~

总结

以上是生活随笔为你收集整理的多协程实例分析(一)的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。