zoukankan      html  css  js  c++  java
  • gevent 实现io自动切换,gevent.join([]), gevent.spawn, 爬虫多并发的实现

    gevent 是一个第三方库,可以很容易的实现遇到io(文件传输)操作时,程序自动跳转到下一个程序 

    例一: 用gevent.sleep()  来模拟io操作 

    import gevent

    def foo():
    print('12')
    gevent.sleep(2)
    print('34')

    def bar():
    print('56')
    gevent.sleep(1) #休息一秒,模拟遇到IO状况
    print('78')

    def test1():
    print('90')
    gevent.sleep(0)
    print('100')

    gevent.joinall( #添加所有的协程
    [ gevent.spawn(foo), #创建一个foo协程
    gevent.spawn(bar),
    gevent.spawn(test1)

    ]
    )

    例二:通过gevent 实现 爬虫的异步多并发,遇到io操作就自动切换

    from gevent import monkey
    monkey.patch_all() #对程序中的IO操作进行标记

    import gevent

    from urllib.request import urlopen

    def f(url):
    resp = urlopen(url)
    data = resp.read()
    print('%d bytes receive from %s'%(len(data), url))

    gevent.joinall([
    gevent.spawn(f,'https://www.python.org/'), #gevent.spawn(f,args) 第一个参数是程序名, 第二个参数是传入程序的参数
    gevent.spawn(f, 'https://www.yahoo.com/'),
    gevent.spawn(f, 'https://github.com/'),
    ])






  • 相关阅读:
    1、远程连接工具
    Restful架构API编码规范
    61、springmvc-异步请求-返回DeferredResult
    60、springmvc-异步请求-返回Callable
    59、servlet3.0-异步请求
    58、springmvc-定制与接管SpringMVC
    HTTP层 —— 响应
    HTTP层 —— 请求
    HTTP层 —— 控制器
    HTTP层 —— CSRF保护
  • 原文地址:https://www.cnblogs.com/my-love-is-python/p/9164721.html
Copyright © 2011-2022 走看看