例子:
import gevent
from gevent import monkey
import urllib2
from gevent.pool import Pool
import datetime,sys
def resquest01():
print "resquest start..."
for i in threads:
print i
thread1 = int(threads[0])
print type(thread1)
print "thread1"
print thread1
print "thread1"
for n in loops:
print n
loop1 = int(loops[0])
print type(loop1)
print "loop1"
print loop1
print "loop1"
print('Running in foo')
gevent.sleep(0)
print('Explicit context switch to foo again')
#start_time = time.ctime()
#print start_time
urls = ['http://10.154.156.238:8000'] * loop1
pool = Pool(thread1)
print pool.map(download,urls)
#end_time = time.ctime()
#print end_time
print '-------------------------------------------------------'
def resquest02():
print "resquest start..."
for i in threads:
print i
thread2 = int(threads[1])
print type(thread2)
print "thread2"
print thread2
print "thread2"
for n in loops:
print n
loop2 = int(loops[1])
print type(loop2)
print "loop2"
print loop2
print "loop2"
print('Explicit context to bar')
gevent.sleep(0)
print('Implicit context switch back to bar')
urls = ['http://10.154.156.238:8000/error'] * loop2
pool = Pool(thread2)
print pool.map(download,urls)
def download(urls):
start_time = datetime.datetime.now()
print start_time
try:
respones = urllib2.urlopen(urls)
code = respones.getcode()
print code
except urllib2.HTTPError,e:
print e.code
end_time = datetime.datetime.now()
print end_time
elapsed_time = (start_time - end_time).seconds
print 'elapsed_time:' + str(elapsed_time)
#return urllib2.urlopen(urls).read()
#gevent.joinall([gevent.spawn(foo),gevent.spawn(bar),])
if __name__ == '__main__':
print "start testing..."
origin = sys.argv[1:]
print origin
threads1 = 1
print type(threads1)
threads2 = 2
print type(threads2)
global loops,threads,urls
loops = []
threads = []
urls = []
for index, i in enumerate(origin):
if index % 3 == 2:
print 'index is %d, i is %s' % (index,i)
loops.append(i)
if index % 3 == 1:
print 'index is %d ,i is %s' % (index,i)
threads.append(i)
if index % 3 == 0:
print 'index is %d , i is %s' % (index,i)
urls.append(i)
print loops
print threads
print urls
print "main() end..."
#loop = i
#print loop
gevent.joinall([gevent.spawn(resquest01),gevent.spawn(resquest02),])
相关推荐
`gevent`是一个基于greenlet的库,它提供了一种高效的并发模型,特别适合于网络I/O密集型应用,如网络爬虫。 首先,让我们深入了解一下`pip`。`pip`全称为“Pip Installs Packages”,它允许用户通过命令行接口安装...
- **定义**:Gevent 是一个基于 libev 的并发库,为 Python 提供了一个简洁高效的 API 来处理并发和网络相关的任务。 - **目标用户**:本书面向具备中级 Python 基础的程序员,不需要对并发编程有深入了解即可开始...
gevent-Python网络库
grequests在内部使用gevent库来实现非阻塞IO操作,从而达到并发请求的效果。 6. grequests的基本使用:使用grequests并发发送请求的基本过程包括构造一个包含多个grequests请求对象的列表,然后使用grequests.map()...
其中,`gevent` 是一个基于协作式多任务的第三方库,它为Python提供了高效的协程支持。 #### 二、协程与Gevent基础 ##### 1. 协程简介 协程是一种用户空间的轻量级线程,它与线程相比有以下优势: - **切换成本...
Quinet是一个简单的客户端网络并发框架, 其基于Python的gevent库(即协程), 并兼容Python2和Python3。Quinet旨在让任何一个Python开发者只需几行代码即可享受网络高并发带来的效率和乐趣.
在Python编程中,Gevent是一个高效的并发库,它基于Greenlet,并且提供了对协程的支持。本文将深入探讨Gevent的安装、工作原理以及如何在实际项目中应用协程。 1. **Gevent简介** Gevent是一个基于Greenlet的异步I/...
标题中的“Python-一个用Python实现的Erlang结点使用gevent库”指的是一个Python项目,该项目旨在实现Erlang的节点功能,但完全使用Python语言编写,并且利用了gevent库来提高并发性能。Erlang是一种用于构建高可用...
Gevent是一个基于libev事件循环库的Python并发库,由Gevent社区维护。它允许程序员使用Python原生的同步API来编写异步代码,并且能够轻易地处理大量并发连接,特别适合I/O密集型的网络应用。Gevent的API设计简洁,...
《Python库gevent-websocket深度解析》 在Python的世界里,高效的并发处理是开发者们常常面临的挑战。而gvent-websocket库就是为了解决这个问题而诞生的,它结合了gevent的协程模型和WebSocket网络协议,使得网络...
而gevent是一个基于协程的Python网络库,能够通过修改标准库和其他第三方库的代码来利用协程,从而提升并发性能。 在传统的程序执行中,CPU需要按照程序的顺序依次执行各个任务,如果遇到I/O操作(如网络、文件读写...
4. **网络库兼容性**:`gevent`与许多Python的网络库如`socket`, `httplib`等兼容,无需修改代码即可获得异步性能提升。 5. **性能优化**:由于减少了系统线程的创建和上下文切换,`gevent`在处理大量并发连接时,...
`gevent`是一个基于cooperative multitasking(协同多任务)的Python网络库,它利用了greenlet(轻量级线程)实现高效的并发处理。greenlet是一种内核不感知的轻量级线程,它们在同一个进程中运行,通过协作而非抢占...
`gevent`是一个基于`libev`事件库的Python网络库,它通过使用协同多线程(cooperative multitasking)模型,即绿线程(greenlet),来实现高效的异步I/O操作。在Python中,传统的多线程可能会因为全局解释器锁(GIL...
gevent是一个基于greenlet的事件驱动网络库,它提供了一种高效的并发模型。greenlet是一种轻量级的协程,它们在同一个进程内运行,且无需线程切换的开销。gevent通过 monkey-patching 技术来替换标准库中的阻塞IO...
**gevent** 是一个基于协程的Python库,它提供了事件驱动的网络编程和并发操作。在传统的多线程或多进程模型中,每个线程或进程会占用一定的系统资源,当并发量增大时,这些资源消耗会显著增加。而gevent通过使用...
《Python库gevent详解》 在Python编程领域,gevent是一个高效且强大的并发库,它基于greenlet(轻量级协程)实现,为开发者提供了简单易用的异步I/O模型。本篇文章将深入探讨gevent的核心概念、功能以及在实际应用...
`gevent`是一个基于`libev`事件库的Python网络库,它通过使用协同多线程(cooperative multitasking)来实现高效的并发处理。`gevent`的核心是绿色线程(greenlet),这是一种轻量级的线程,能够在单个操作系统线程...
gevent是Python的一个第三方库,它通过提供一个高级的并发模型来增强Python的并发执行能力。gevent基于greenlet库,该库实现了微线程(协程),这些微线程在遇到IO操作时可以自动让步,从而允许多个微线程在单个线程...
`gevent`是一个基于`libev`事件库的Python网络库,它通过使用协同多线程(cooperative multitasking)来实现异步编程,即使用greenlet进行任务调度。在Python中,传统的多线程由于全局解释器锁(GIL)的限制,无法...