协程补充

本文通过Python示例介绍了使用gevent实现的协程和协程池的基本用法,演示了如何并发请求多个网站并处理结果。

协程举例

from gevent import monkey;monkey.patch_all()
import gevent
import requests
import time

def runtask(url):
    print('visit --> %s %s' % (url,time.ctime()))
    try:
        res = requests.get(url)
        time.sleep(2)
        data = res.text
        print('%d bytes received from %s %s' % (len(data),url,time.ctime()))
    except Exception as e :
        print(e)

if __name__ == '__main__':
    urls = ['http://www.baidu.com','http://www.sohu.com','http://www.163.com']
    greenlets = [ gevent.spawn(runtask,url) for url in urls]
    gevent.joinall(greenlets)

result

协程池

from gevent import monkey;monkey.patch_all()
from gevent.pool import Pool
import requests
import time

def runtask(url):
    print('visit --> %s %s' % (url,time.ctime()))
    try:
        res = requests.get(url)
        time.sleep(2)
        data = res.text
        print('%d bytes received from %s %s' % (len(data),url,time.ctime()))
    except Exception as e :
        print(e)
    return 'url %s --->finshed' % url

if __name__ == '__main__':
    pool = Pool(2)
    urls = ['http://www.baidu.com','http://www.sohu.com','http://www.163.com']
    results = pool.map(runtask,urls)
    print(results)

 

转载于:https://www.cnblogs.com/Erick-L/p/7707961.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值