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/
Greenlets间如何实现互相通信?的更多相关文章
- 浅谈C#中一种类插件系统编写的简单方法(插件间、插件宿主间本身不需要通信)
文章版权由作者李晓晖和博客园共有,若转载请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/. 1.背景 三年多前还在上研时,用C#+反射机制写过插件系统,后来又用M ...
- docker应用-5(使用overlay 网络进行容器间跨物理主机通信)
同一个主机上的Docker容器之间通信 docker 引擎会在主机上增加一个docker0网卡,该网卡具有双重身份: 1.从容器视角,网桥(交换机)身份docker0 对于运行在同一个主机上的各个容器 ...
- 转载:pyqt线程间通过 信号/槽 通信
转自:http://blog.sina.com.cn/s/blog_613d5bb701016qzv.html 信号(singal)与槽(slot)用于对象相互通信,信号:当某个对象的某个事件发生时, ...
- .net4.0多进程间共享内存实现通信(VB.Net)
.net4.0新增内存共享功能,从而很方便的实现了多进程间通信. 源码下载
- Java多线程(三) 多线程间的基本通信
多条线程在操作同一份数据的时候,一般需要程序去控制好变量.在多条线程同时运行的前提下控制变量,涉及到线程通信及变量保护等. 本博文主要总结:①线程是如何通信 ②如何保护线程变量 1.Java里的线程 ...
- C#实现窗体间的通信
以下将窗体间的几种通信实现方式做一下罗列:首先新建一个窗体Form1,在其中放置一个Textbox.Button控件.再新建一个窗体Form2,其上放置一个Button控件.具体代码示例如下: //F ...
- python并发编程之多进程1-----------互斥锁与进程间的通信
一.互斥锁 进程之间数据隔离,但是共享一套文件系统,因而可以通过文件来实现进程直接的通信,但问题是必须自己加锁处理. 注意:加锁的目的是为了保证多个进程修改同一块数据时,同一时间只能有一个修改,即串行 ...
- [转] React 中组件间通信的几种方式
在使用 React 的过程中,不可避免的需要组件间进行消息传递(通信),组件间通信大体有下面几种情况: 父组件向子组件通信 子组件向父组件通信 跨级组件之间通信 非嵌套组件间通信 下面依次说下这几种通 ...
- Linux进程间的通信
一.管道 管道是Linux支持的最初Unix IPC形式之一,具有以下特点: A. 管道是半双工的,数据只能向一个方向流动: B. 需要双工通信时,需要建立起两个管道: C. 只能用于父子进程或者兄弟 ...
随机推荐
- IUS database
仿真中的database主要存放关于signal transition以及时间点的信息. IUS中的的database包括: 1) SHM, Verilog/VHDL/mixed-language的d ...
- SQL语句增加字段、修改字段、修改类型、修改默认值
一.修改字段默认值 alter table 表名 drop constraint 约束名字 ------说明:删除表的字段的原有约束 alter table 表名 add constraint 约 ...
- Apache部署django项目
在此之前,我们一直使用django的manage.py 的runserver 命令来运行django应用,但这只是我们的开发环境,当项目真正部署上线的时候这做就不可行了,必须将我们的项目部署到特定的w ...
- PHP基础班初学感悟
不知不觉差不多一个月就过去了 刚到培训班那时候的心情,现在也还能有所感觉 作为今年6月份的毕业生,刚从大学的实习期出来,辞掉了上一份工作,本来是打算找一份更加与专业挂钩的工作做的 也许是90后对网络的 ...
- UICollectionView 自定义组头组尾的XIB方法
UICollectionView的加载方式和Tableview很像,基本上加载的方法都差不多,尤其是它的数据源的方法和代理方法基本上类似,只不过是名字上有点细微的差别而已.这里面不赘述. 1. UIC ...
- html与Android——webView
1 <html> 2 <head> 3 <title>myHtml.html</title> 4 5 <meta http-equiv=" ...
- Django(三)
1.Django请求的生命周期 路由系统 -> 视图函数(获取模板+数据-->渲染) -> 字符串返回给用户 2.路由系统 /index/ ...
- mysql 慢查询日志切割
- ssh 配置config 别名
打开shell 当前用户 cd ~ cd .ssh vim config Host (别名) User root(git) 登陆远程shell的用户 HostName 10.0.0.1 ip地址 ...
- IOS textView获取光标定位,以及选中
当textview成为第一响应者的时候就会调用一个协议方法 - (void)textViewDidChangeSelection:(UITextView *)textView; 在这个协议方法中可以实 ...