`
小麦麦子
  • 浏览: 29197 次
文章分类
社区版块
存档分类
最新评论

Greenlets间如何实现互相通信?

阅读更多

Greenlets互相通信之Event

  1.为什么引入Event

  2.Event是什么;

  3.编程实例。

  为什么引入Event

  1.windows中有Events,作为线程间同步的方法;

  2.Gevent中则是Greenlet同步的一种方法;

  3.获得某个时机;

  4.比如学校,下课铃响了,大家可以放学回家了;

  5.如果纯手工,如何实现?

  代码实例:

  # -*- coding: utf-8 -*-

  import gevent

  from gevent.event import Event, AsyncResult

  evt = AsyncResult()

  def setter():

  print ' 好好听课 '

  gevent.sleep( 5 ) //持续时间为5

  print ' 好的 ,下课 '

  global evt

  evt.set( ' hello world ' )

  def waiter() : //等待下课

  print ' 听课 '

  global evt, is_ok

  data = evt.get()

  print data

  print ' 哈哈 , 终于下课了 '

  def main() :

  gevent.joinall( [

  gevent.spawn( setter )

  , gevent.spawn( waiter )

  , gevent.spawn( waiter)

  ] )

  if __name__ == ' __main__ ' :

  main()

  Event & AsyncEvent

  1.均实现通知;

  2.AsyncEvent可以带数据。

 

 

原文链接:http://www.maiziedu.com/wiki/frame/event/

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics