`
喜欢蓝色的我
  • 浏览: 370857 次
  • 性别: Icon_minigender_2
  • 来自: 北京
社区版块
存档分类
最新评论

python gevent网络库

 
阅读更多

例子:

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),])

 

 

 

分享到:
评论

相关推荐

    python安装gevent需要的pip文件.zip

    `gevent`是一个基于greenlet的库,它提供了一种高效的并发模型,特别适合于网络I/O密集型应用,如网络爬虫。 首先,让我们深入了解一下`pip`。`pip`全称为“Pip Installs Packages”,它允许用户通过命令行接口安装...

    python Gevent程序员指南.pdf

    - **定义**:Gevent 是一个基于 libev 的并发库,为 Python 提供了一个简洁高效的 API 来处理并发和网络相关的任务。 - **目标用户**:本书面向具备中级 Python 基础的程序员,不需要对并发编程有深入了解即可开始...

    gevent-Python网络库

    gevent-Python网络库

    Python使用grequests(gevent+requests)并发发送请求过程解析

    grequests在内部使用gevent库来实现非阻塞IO操作,从而达到并发请求的效果。 6. grequests的基本使用:使用grequests并发发送请求的基本过程包括构造一个包含多个grequests请求对象的列表,然后使用grequests.map()...

    简单了解python gevent 协程使用及作用

    其中,`gevent` 是一个基于协作式多任务的第三方库,它为Python提供了高效的协程支持。 #### 二、协程与Gevent基础 ##### 1. 协程简介 协程是一种用户空间的轻量级线程,它与线程相比有以下优势: - **切换成本...

    Python-Quinet是一个简单的客户端网络并发框架其基于Python的gevent库即协程

    Quinet是一个简单的客户端网络并发框架, 其基于Python的gevent库(即协程), 并兼容Python2和Python3。Quinet旨在让任何一个Python开发者只需几行代码即可享受网络高并发带来的效率和乐趣.

    python-gevent-20.9.0.tar.gz

    在Python编程中,Gevent是一个高效的并发库,它基于Greenlet,并且提供了对协程的支持。本文将深入探讨Gevent的安装、工作原理以及如何在实际项目中应用协程。 1. **Gevent简介** Gevent是一个基于Greenlet的异步I/...

    Python-一个用Python实现的Erlang结点使用gevent库

    标题中的“Python-一个用Python实现的Erlang结点使用gevent库”指的是一个Python项目,该项目旨在实现Erlang的节点功能,但完全使用Python语言编写,并且利用了gevent库来提高并发性能。Erlang是一种用于构建高可用...

    gevent开发指南

    Gevent是一个基于libev事件循环库的Python并发库,由Gevent社区维护。它允许程序员使用Python原生的同步API来编写异步代码,并且能够轻易地处理大量并发连接,特别适合I/O密集型的网络应用。Gevent的API设计简洁,...

    Python库 | gevent-websocket-0.9.4.tar.gz

    《Python库gevent-websocket深度解析》 在Python的世界里,高效的并发处理是开发者们常常面临的挑战。而gvent-websocket库就是为了解决这个问题而诞生的,它结合了gevent的协程模型和WebSocket网络协议,使得网络...

    python 协程 gevent原理与用法分析

    而gevent是一个基于协程的Python网络库,能够通过修改标准库和其他第三方库的代码来利用协程,从而提升并发性能。 在传统的程序执行中,CPU需要按照程序的顺序依次执行各个任务,如果遇到I/O操作(如网络、文件读写...

    Python库 | gevent-1.1rc2-cp26-none-macosx_10_11_intel.whl

    4. **网络库兼容性**:`gevent`与许多Python的网络库如`socket`, `httplib`等兼容,无需修改代码即可获得异步性能提升。 5. **性能优化**:由于减少了系统线程的创建和上下文切换,`gevent`在处理大量并发连接时,...

    gevent-21.12.0-cp39-cp39-win_amd64.whl.zip

    `gevent`是一个基于cooperative multitasking(协同多任务)的Python网络库,它利用了greenlet(轻量级线程)实现高效的并发处理。greenlet是一种内核不感知的轻量级线程,它们在同一个进程中运行,通过协作而非抢占...

    Python库 | gevent-1.3.5-cp34-cp34m-win_amd64.whl

    `gevent`是一个基于`libev`事件库的Python网络库,它通过使用协同多线程(cooperative multitasking)模型,即绿线程(greenlet),来实现高效的异步I/O操作。在Python中,传统的多线程可能会因为全局解释器锁(GIL...

    Python-gevent轻量级进程内的并发编程

    gevent是一个基于greenlet的事件驱动网络库,它提供了一种高效的并发模型。greenlet是一种轻量级的协程,它们在同一个进程内运行,且无需线程切换的开销。gevent通过 monkey-patching 技术来替换标准库中的阻塞IO...

    python常用模块gevent,bs等

    **gevent** 是一个基于协程的Python库,它提供了事件驱动的网络编程和并发操作。在传统的多线程或多进程模型中,每个线程或进程会占用一定的系统资源,当并发量增大时,这些资源消耗会显著增加。而gevent通过使用...

    Python库 | gevent-20.5.1-cp27-cp27mu-manylinux2010_x86_64.whl

    《Python库gevent详解》 在Python编程领域,gevent是一个高效且强大的并发库,它基于greenlet(轻量级协程)实现,为开发者提供了简单易用的异步I/O模型。本篇文章将深入探讨gevent的核心概念、功能以及在实际应用...

    Python库 | gevent-1.3b1-cp35-cp35m-manylinux1_x86_64.whl

    `gevent`是一个基于`libev`事件库的Python网络库,它通过使用协同多线程(cooperative multitasking)来实现高效的并发处理。`gevent`的核心是绿色线程(greenlet),这是一种轻量级的线程,能够在单个操作系统线程...

    Python的gevent框架的入门教程

    gevent是Python的一个第三方库,它通过提供一个高级的并发模型来增强Python的并发执行能力。gevent基于greenlet库,该库实现了微线程(协程),这些微线程在遇到IO操作时可以自动让步,从而允许多个微线程在单个线程...

    Python库 | gevent-1.5a3-cp35-cp35m-win_amd64.whl

    `gevent`是一个基于`libev`事件库的Python网络库,它通过使用协同多线程(cooperative multitasking)来实现异步编程,即使用greenlet进行任务调度。在Python中,传统的多线程由于全局解释器锁(GIL)的限制,无法...

Global site tag (gtag.js) - Google Analytics