将Twisted中的异步改为同步了:
#! /usr/bin/env python
# -*- coding: UTF-8 -*-
# File: readcall.py
# Date: 2009-06-16
# Author: gashero
"""
测试Greenlet与Twisted合用,实现异步改同步调用
"""
import os
import sys
import greenlet
from twisted.internet import reactor,protocol
from twisted.protocols import basic
from twisted.python import log
def wait_host():
return
class RCProtocol(basic.LineReceiver):
def connectionMade(self):
print 'connection made'
self.grrc=greenlet.greenlet(self.read_chunk)
self.grrc.switch() #切换到处理函数read_chunk()
print 'switched to grrc'
return
def connectionLost(self,reason):
print 'connection lost'
return
def _dataReceived(self,data):
return
def lineReceived(self,line):
print 'line Received'
self.grrc.switch(line)
return
def read_chunk(self):
while True:
#死循环中处理每次读取数据成功
print 'in read_chunk()'
g_self=greenlet.getcurrent()
chunk=g_self.parent.switch() #切换到主循环的greenlet,等被切换回来时就返回了传递的数据了
if 'quit' in chunk.lower():
self.transport.write('HTTP/1.1 200 OK\r\nContent-Length:10\r\n\r\nHelloWorld')
self.transport.loseConnection()
break
return
class RCFactory(protocol.ServerFactory):
protocol=RCProtocol
def main():
log.startLogging(sys.stdout)
reactor.listenTCP(8090,RCFactory())
reactor.run()
return
if __name__=='__main__':
main()
相关推荐
总之,Greenlet为JavaScript开发者提供了一种有效处理异步操作的工具,通过模拟轻量级线程,提高了代码的并发执行能力,降低了编写异步代码的复杂性。理解和掌握Greenlet的使用,可以帮助开发者构建更高效、响应更快...
greenlet与Python的生成器(generator)结合,能够轻松创建出复杂的异步流程,而无需复杂的回调函数或 futures。 总的来说,greenlet是Python中实现轻量级并发的重要工具,它简化了异步编程,提高了程序的执行效率...
generator实现的协程在yield value时只能将value返回给调用者(caller)。 而在greenlet中,target.switch(value)可以切换到指定的协程(target), 然后yield value。greenlet用switch来表示协程的切换,从一个协程...
1. **网络编程**:`greenlet`常用于异步I/O框架,如`gevent`,它允许在单个线程中高效地处理多个网络连接,无需等待阻塞的I/O操作完成。 2. **并发处理**:在需要同时处理多个任务但又不想使用多线程或多进程的情况...
在实际开发中,greenlet常用于网络服务器、数据库连接池、异步I/O等场景,通过greenlet之间的切换,可以实现非阻塞I/O,提高服务的吞吐量。使用greenlet需要了解其工作原理,包括如何创建和切换greenlet,以及如何...
这意味着在Gevent环境中,当一个greenlet进行I/O操作时,系统会自动切换到另一个可执行的greenlet,待I/O操作完成后再切换回来,从而实现了无感知的异步执行。 安装`greenlet`和`gevent`的过程如下: 1. 首先确保...
python3.8版本的greenlet wheel文件,pip安装某个库失败的时候,如果提示greenlet安装失败,可以用这个wheel文件安装
资源分类:Python库 所属语言:Python 使用前提:需要解压 资源全名:greenlet-0.3.1.win32-py2.6.exe 资源来源:官方 安装方法:https://lanzao.blog.csdn.net/article/details/101784059
当这些事件发生时,diesel会自动调度Greenlet,执行相应的回调函数,而不是等待I/O操作完成。这种方式允许程序同时处理多个事件,提高了整体的并发性和响应速度。 在diesel中,核心组件包括事件循环(event loop)...
greenlet-0.4.15-cp35-cp35m-win32
格林莱特 将异步函数移到其自己的线程中。 简化的单功能版本,提供。 这个名字的选择,但是。 Greenlet支持IE10 +,因为它使用 。 为了使用 ,必须使用诸如类的库对Web Workers进行。安装及使用npm i -S greenlet ...
安装“greenlet-0.3.3.win32-py2.4.exe”这个文件非常简单,只需在Windows环境下运行该可执行文件,即可将greenlet库安装到Python环境中。值得注意的是,这是一个针对Python 2.4的Windows平台的版本,对于其他Python...
资源来自pypi官网。 资源全名:greenlet-0.4.0-py2.7-win-amd64.egg
标题中的“greenlet-1.0a1-cp27-cp27m-manylinux2010_x86_64.whl”是Python的一个特定版本的库包,名为greenlet,版本号为1.0a1。这个包是为Python 2.7编译的,具有cp27m的ABI(Application Binary Interface)标识...
安装greenlet-0.4.2.win-amd64-py2.7.exe这个文件,用户只需双击运行,遵循安装向导,即可将greenlet库添加到Python环境中。需要注意的是,对于使用pip或其他方式安装的依赖,直接通过命令行运行`pip install ...
greenlet-1.1.1-cp310-cp310-win_amd64
资源分类:Python库 所属语言:Python 资源全名:greenlet-0.4.16-cp37-cp37m-manylinux1_x86_64.whl 资源来源:官方 安装方法:https://lanzao.blog.csdn.net/article/details/101784059
greenlet-1.1.1-cp37-cp37m-win_amd64
资源来自pypi官网。 资源全名:greenlet-0.4.13-cp34-cp34m-manylinux1_x86_64.whl