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

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/

分享到:
评论

相关推荐

    Python3:python使用的不同实现

    除了这些,还有一些其他的Python实现,如Stackless Python,它增强了CPython的并发能力,通过微线程(greenlets)实现了轻量级的并发。另外,MicroPython是针对嵌入式系统和资源有限的环境设计的,它提供了一个精简...

    python Gevent程序员指南.pdf

    - **队列(Queue)**:用于实现线程安全的数据结构,在多个 Greenlets 间共享数据。 - **组和池(Group and Pool)**:提供了一种管理大量 Greenlets 的方式,可以通过组或池来控制 Greenlets 的执行。 - **锁(Lock) 和...

    gevent开发指南

    Greenlets是Gevent实现轻量级并发的关键组件,它们是轻量级的协程,可以在多个Greenlet之间进行切换,以非阻塞的方式执行任务,且每个Greenlet都有自己的上下文信息。 Greenlets可以独立地管理状态和执行流程,可以...

    Eventlet学习总结.docx

    其核心特性在于它使用了非阻塞I/O模型和协程(也称为greenlets或微线程)来实现轻量级并发。Eventlet 的设计目的是使开发者能够以同步、阻塞式编程的方式编写代码,但在运行时,它会通过greenlets来实现异步、非阻塞...

    greenlet工具解压包

    这些文件提供了greenlet的核心功能,比如创建和切换greenlet、在greenlets间传递数据等。 在实际编程中,你可以使用greenlet来编写高度并发的应用,例如网络服务器、事件驱动的程序或处理大量I/O操作的任务。...

    Python高性能网络编程并发框架研究.pdf

    文档中特别提到了eventlet框架,这是一个支持异步IO操作的库,它利用了Greenlets来实现轻量级的并发控制,特别适合构建高性能网络应用。 4. IO模型的优化与选择 在服务器并发编程中,除了选择合适的编程模型之外,...

    greenswitch:经过实践检验的FreeSWITCH事件套接字协议客户端与Gevent的实现

    这是使用Gevent Greenlets实现的FreeSWITCH事件套接字协议。 它已经在生产中,每天处理数百个电话。 全面的Python3支持! 入站套接字模式 >> > import greenswitch >> > fs = greenswitch . InboundESL ( host = '...

    greenlet-chatserver-example:创建简单的聊天服务器以了解 Python 中的 greenlets

    greenlet-chatserver-example 创建简单的聊天服务器以了解 Python 中的 greenlets安装pip install -r requirements.txt ##使用发送消息: telnet localhost 8080Trying 127.0.0.1...Connected to localhost.Escape ...

    guv:一个快速的事件循环,比如 Python 3 的 gevent,建立在 greenlets 和 libuv 之上

    guv = greenlets + libuv 文档: 来源: 关键词: guv, greenlet, gevent, eventlet 关于 guv 是Python >= 3.2 和 pypy3的快速网络库和 WSGI 服务器(如 gevent/eventlet) 事件循环后端是 ,旨在与接口完全...

    Python-diesel基于Greenlet的事件IOPython框架

    由于Greenlet的轻量级性质,它能够在短时间内快速切换,从而实现高吞吐量的网络通信。此外,diesel还提供了强大的错误处理机制,能够优雅地处理异常情况,保证了程序的健壮性。 在实际应用中,diesel适用于构建...

    gevent,threads&async frameworks.pdf

    `gevent` 是一个基于 Python 的协程库,它通过使用协作式多任务(greenlets)来实现高效的并发处理。不同于传统的线程(threads)和进程(processes),gevent 的核心概念是“绿色线程”(green threads),这些线程...

    python-gevent-20.9.0.tar.gz

    例如,`gevent.queue`模块提供了一种在Greenlet间传递数据的高效方式,而`gevent.sleep`可以用来控制程序的执行流程。 总结,Gevent是Python中强大的并发工具,通过协程和非阻塞I/O,它能帮助开发者编写出高性能的...

    Eventlet学习总结.pdf

    与传统的多线程相比,greenlets之间的切换代价较小,因为它们不需要系统级别的上下文切换,这降低了资源消耗。 安装Eventlet在Windows和Linux上的步骤如下: 1. Windows上,首先需要安装ActivePython,然后在...

    PyPI 官网下载 | greenlet-0.4.5-cp27-none-win_amd64.whl

    Greenlets允许在单个进程中实现并发执行,它们是非抢占式的,依赖于用户代码来切换上下文。 2. **0.4.5**:这是greenlet库的版本号,表示这个版本包含了从上一个版本到这个版本之间的所有更新和修复。 3. **cp27**...

    Eventlet学习总结汇编.docx

    Eventlet是一个Python库,专门用于处理网络相关的任务,它支持高并发的I/O操作,通过使用协程(greenlets)来实现非阻塞的IO模型。Eventlet的核心思想是利用轻量级的协程(greenlets)来模拟多线程,并通过事件驱动...

    Python基于gevent实现高并发代码实例

    gevent是基于协程的库,它利用greenlet(一种轻量级的线程实现)来实现高效的并发。 协程是一种用户级的轻量级线程,相比于系统级线程,它们不需要频繁地进行上下文切换,从而提高了性能。gevent通过猴子补丁...

    Python库 | greenlet-0.4.13-cp34-cp34m-manylinux1_x86_64.whl

    通过在greenlets之间切换,程序可以实现并发效果,而不需要等待I/O操作完成。 例如: ```python import greenlet def function1(): print("Function 1 started") # 执行一些操作 greenlet.getcurrent().parent...

    gevent:适用于Python的基于协程的并发库

    `gevent`是Python中一个强大的并发库,它基于协程(coroutines)和绿线程(greenlets)实现,为Python开发者提供了一种高效、简洁的方式来处理并发和异步操作。在传统的多线程或多进程模型中,线程间的切换开销较大...

    mantrid:可在运行时配置的 HTTP 负载均衡器

    兼容性Mantrid 旨在与 Python 2.6 或 2.7 一起使用,并且需要支持 greenlets 的 Python 实现(因此无论是 CPython 还是 PyPy 1.7 及更高版本)。快速开始安装 Mantrid: $ sudo python setup.py install使用默认设置...

    learngeventsocketio:通过在 readthedocs 上的 sphinxrestructured 文本记录的 what-I-learnt-with-python-gevent-socketio 的完整描述

    4. **Python SocketIO**: SocketIO允许开发者在Web应用中实现WebSocket或其他实时通信协议。我们将学习如何安装和配置SocketIO服务器,以及如何创建和监听事件。 5. **SocketIO客户端和服务器通信**: 学习如何在...

Global site tag (gtag.js) - Google Analytics