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/

Greenlets间如何实现互相通信?的更多相关文章

  1. 浅谈C#中一种类插件系统编写的简单方法(插件间、插件宿主间本身不需要通信)

    文章版权由作者李晓晖和博客园共有,若转载请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/. 1.背景 三年多前还在上研时,用C#+反射机制写过插件系统,后来又用M ...

  2. docker应用-5(使用overlay 网络进行容器间跨物理主机通信)

    同一个主机上的Docker容器之间通信 docker 引擎会在主机上增加一个docker0网卡,该网卡具有双重身份: 1.从容器视角,网桥(交换机)身份docker0 对于运行在同一个主机上的各个容器 ...

  3. 转载:pyqt线程间通过 信号/槽 通信

    转自:http://blog.sina.com.cn/s/blog_613d5bb701016qzv.html 信号(singal)与槽(slot)用于对象相互通信,信号:当某个对象的某个事件发生时, ...

  4. .net4.0多进程间共享内存实现通信(VB.Net)

    .net4.0新增内存共享功能,从而很方便的实现了多进程间通信. 源码下载

  5. Java多线程(三) 多线程间的基本通信

    多条线程在操作同一份数据的时候,一般需要程序去控制好变量.在多条线程同时运行的前提下控制变量,涉及到线程通信及变量保护等. 本博文主要总结:①线程是如何通信  ②如何保护线程变量 1.Java里的线程 ...

  6. C#实现窗体间的通信

    以下将窗体间的几种通信实现方式做一下罗列:首先新建一个窗体Form1,在其中放置一个Textbox.Button控件.再新建一个窗体Form2,其上放置一个Button控件.具体代码示例如下: //F ...

  7. python并发编程之多进程1-----------互斥锁与进程间的通信

    一.互斥锁 进程之间数据隔离,但是共享一套文件系统,因而可以通过文件来实现进程直接的通信,但问题是必须自己加锁处理. 注意:加锁的目的是为了保证多个进程修改同一块数据时,同一时间只能有一个修改,即串行 ...

  8. [转] React 中组件间通信的几种方式

    在使用 React 的过程中,不可避免的需要组件间进行消息传递(通信),组件间通信大体有下面几种情况: 父组件向子组件通信 子组件向父组件通信 跨级组件之间通信 非嵌套组件间通信 下面依次说下这几种通 ...

  9. Linux进程间的通信

    一.管道 管道是Linux支持的最初Unix IPC形式之一,具有以下特点: A. 管道是半双工的,数据只能向一个方向流动: B. 需要双工通信时,需要建立起两个管道: C. 只能用于父子进程或者兄弟 ...

随机推荐

  1. 安装hive+mysql

    1.源码安装mysql 以root用户首先安装libaio-0.3.104.tar.gz tar zxvf libaio-0.3.104.tar.gz cd libaio-0.3.104 make p ...

  2. struts2漏洞与修复

    步骤: 1.下载struts-2.3.16.3-all, D:\TEST\struts2.3.16.3 2.替换jar,参考 http://blog.csdn.net/spyjava/article/ ...

  3. 动态SQL字符长度超过8000

    动态SQL字符长度超过8000,我记得SQL SERVER 2008中用SP_EXECUTESQL打破了这个限制. 平常用动态SQL,可能都会用EXEC(),但是有限制,就是8000字符串长度.自从S ...

  4. IIS Express 配置外部访问

    IIS Express是Visual Stuido自带的微型Web服务器,简单易用. IIS Express默认只允许本机访问,通过Visual Studio调试Web程序时,我们有时需要通过外部访问 ...

  5. 获得ip地理信息的几种方法

    目前已知的有腾讯.新浪.网易.搜狐和Google提供IP地址查询API,但是找得到的只有腾讯.新浪和网易的,Google的貌似要用Google Maps所以没有研究.看了下国内的几个腾讯提供的是Jav ...

  6. Swift_UI_UILabel

    Swift_UI_UILabel import UIKit class ViewController: UIViewController { override func viewDidLoad() { ...

  7. 阿里云mariadb无法启动问题

    需要再安装yum install mariadb-server就可以了, 重启服务器,使用命令 sudo systemctl start mariadb.service

  8. ajax 跨域请求

    1. $.ajax({ type: "get", async: false, url: "http://61.160.194.208:8383/Api/login?acc ...

  9. cookie 的创建 得到 删除

    //设置cookie function setCookie(attr,value,time){ if(time){ var newtime=new Date(); newtime.setTime(ne ...

  10. Scala学习资源

    Scala学习资源: Scala官方网站:http://www.scala-lang.org/ Scala github:https://github.com/scala/scala Twitter ...