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. 只能用于父子进程或者兄弟 ...
随机推荐
- 安装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 ...
- struts2漏洞与修复
步骤: 1.下载struts-2.3.16.3-all, D:\TEST\struts2.3.16.3 2.替换jar,参考 http://blog.csdn.net/spyjava/article/ ...
- 动态SQL字符长度超过8000
动态SQL字符长度超过8000,我记得SQL SERVER 2008中用SP_EXECUTESQL打破了这个限制. 平常用动态SQL,可能都会用EXEC(),但是有限制,就是8000字符串长度.自从S ...
- IIS Express 配置外部访问
IIS Express是Visual Stuido自带的微型Web服务器,简单易用. IIS Express默认只允许本机访问,通过Visual Studio调试Web程序时,我们有时需要通过外部访问 ...
- 获得ip地理信息的几种方法
目前已知的有腾讯.新浪.网易.搜狐和Google提供IP地址查询API,但是找得到的只有腾讯.新浪和网易的,Google的貌似要用Google Maps所以没有研究.看了下国内的几个腾讯提供的是Jav ...
- Swift_UI_UILabel
Swift_UI_UILabel import UIKit class ViewController: UIViewController { override func viewDidLoad() { ...
- 阿里云mariadb无法启动问题
需要再安装yum install mariadb-server就可以了, 重启服务器,使用命令 sudo systemctl start mariadb.service
- ajax 跨域请求
1. $.ajax({ type: "get", async: false, url: "http://61.160.194.208:8383/Api/login?acc ...
- cookie 的创建 得到 删除
//设置cookie function setCookie(attr,value,time){ if(time){ var newtime=new Date(); newtime.setTime(ne ...
- Scala学习资源
Scala学习资源: Scala官方网站:http://www.scala-lang.org/ Scala github:https://github.com/scala/scala Twitter ...