`
喜欢蓝色的我
  • 浏览: 361045 次
  • 性别: 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-Quinet是一个简单的客户端网络并发框架其基于Python的gevent库即协程

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

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

    python库。 资源全名:gevent-websocket-0.9.4.tar.gz

    gevent开发指南

    由Gevent社区编写 gevent是一个基于libev的并发库。它为各种并发和网络相关的任务提供了整洁的API。

    Python的网络编程库Gevent的安装及使用技巧

    Gevent库的奥义在于并发式的高性能网络程序设计支持,这里我们将来讲解Python的网络编程库Gevent的安装及使用技巧,来看一下Gevent支持的多进程程序编写:

    Python的gevent框架的入门教程

    Python通过yield提供了对协程的基本支持,但是不完全。而第三方的gevent为Python提供了比较完善的...由于切换是在IO操作时自动完成,所以gevent需要修改Python自带的一些标准库,这一过程在启动时通过monkey patch完

    gevent python 并发

    gevent开发指南,Gevent是一个基于libev 的并发库。它为各种并发和网络相关的任务提供了整洁的API。 本指南假定读者有中高级水平,但不要求其他更多的知识,不期待读者有并发方面的知识。本指南的目标在于给予你需要...

    python并发2之使用asyncio处理并发

    在Python 2的时代,高性能的网络编程主要是使用Twisted、Tornado和Gevent这三个库,但是它们的异步代码相互之间既不兼容也不能移植。如上一节说的,Gvanrossum希望在Python 3 实现一个原生的基于生成器的协程库,...

    gevent 1.0.2

    gevent是一个基于协程的Python网络库,它使用greenlet在libev或libuv事件之上提供高级同步API。

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

    guv 是Python >= 3.2 和 pypy3的快速网络库和 WSGI 服务器(如 gevent/eventlet) 事件循环后端是 ,旨在与接口完全兼容。 CPython 和 pypy3 完全支持 pyuv_cffi。 >= 1.0.0。 通过 dnspython3 支持异步 DNS 查询...

    Python示例-从基础到高手PDF

    第 21 章 服务端 socket 开发之多线程和 gevent 框架并发测试[python 语言] 第 22 章 利用 pypy 提高 python 脚本的执行速度及测试性能 第 23 章 python 实现 select 和 epoll 模型 socket 网络编程 第 24 章 对 ...

    greenify:使gevent可以阻止C库

    可以使在C代码中具有网络操作的Python扩展模块与兼容。 使用与相同的动态功能重定向技术来在运行时修补阻止网络的操作,而无需修改原始模块。 目前, 仅支持ELF格式模块,并且已在Linux上进行了测试。 建置状态 科...

    peerz:使用ZeroMQ套接字和gevent的P2P python库

    使用ZeroMQ套接字和gevent的P2P python库 概述 peerz是使用Zeromq绑定在python中实现结构化对等覆盖网络的实验。 对等管理和路由逻辑都主要基于现有构造的覆盖网络诸如kademlia和tapestry 。 注意: peerz仍处于...

    gevent-intro:Gevent 异步编程入门指南

    我花了一个良好的时间探索,一个非常强大的集网络库,并伤心地学习这先行者是如何失去了它的普及为他人(包括Python核心开发团队)创建自己的现代化解决方案,而不是建立在它之上. 这是一种耻辱,但随着许多伟大...

    cyberbot:基于gevent的轻量级批量扫描框架

    基于库的Cyber​​bot框架,必须首先安装gevent库: pip install gevent 然后克隆此存储库: git clone https://github.com/RickGray/cyberbot.git cyberbot Cyber​​bot框架具有版本2.7.x和支持的开箱即用。 ...

    12.Gevent的猴子补丁.zip

    Python爬虫库的介绍 数据抓取与解析 HTML解析与XPath、CSS选择器的应用 JSON和XML数据的解析 动态网页爬取技术(如使用Selenium等) 反爬机制与应对策略 反爬机制的类型和常见手段 User-Agent设置和IP代理的应用 ...

    11.Gevent中的Greenlet.zip

    Python爬虫库的介绍 数据抓取与解析 HTML解析与XPath、CSS选择器的应用 JSON和XML数据的解析 动态网页爬取技术(如使用Selenium等) 反爬机制与应对策略 反爬机制的类型和常见手段 User-Agent设置和IP代理的应用 ...

    13.Gevent的协程池.zip

    Python爬虫库的介绍 数据抓取与解析 HTML解析与XPath、CSS选择器的应用 JSON和XML数据的解析 动态网页爬取技术(如使用Selenium等) 反爬机制与应对策略 反爬机制的类型和常见手段 User-Agent设置和IP代理的应用 ...

    gevent-websocket:Gitlab资料库的官方镜像

    是网络库的WebSocket库。 功能包括: 在套接字级别或使用抽象接口进行集成。 使用 (WebSocket应用程序消息协议)的RPC和PubSub框架。 使用简单的WebSocket协议插件API即可轻松扩展 from geventwebsocket ...

    Load-Testing-Tool:这是一个负载测试工具,它提供高水平的并发性来负载测试使用 Python 和 Gevent 构建的应用程序

    #Team 30 项目 1 ##描述 该项目涉及在云上构建一个性能测试工具。该工具在云上启动多个虚拟机,从这些虚拟机中的每一个,它会在目标... 它使用 gevent(基于事件编程的 Python 库)、flask、angularjs 和 socketio。

Global site tag (gtag.js) - Google Analytics