Python - gevent - 关于多线程的简单例子

 

import gevent   
from gevent import monkey   #一定要放最前面,所有代码(包括注释)之前
monkey.patch_all() #设置为异步模式

import requests
from gevent.queue import Queue

work = Queue() #创建队列
list_test = ['http://wwww.1.com', 'http://www.2.com', 'http://www.3.com','http://www.4.com','http://www.5.com','http://www.6.com','http://www.7.com']

for list in list_test:
    work.put_nowait(list) #遍历列表里的元素,挨个加入到work队列里

def crawler(): #定义一个函数,方便填加到任务列表
    while not work.empty(): #判断队列是否为空,就是队列里的东西取光了没有
        url = work.get_nowait() #从队列里取出元素使用
        #以下代码为,操作取出来的元素代码
        r = requests.get(url)
        print(url,r.status_code)

task_list=[] #创建一个任务列表,最终要用gevent.joinall(task_list)
for i in range(3): #创建几个线程,就是你要派几条爬虫出来同时干活
    task = gevent.spawn(crawler)
    task_list.append(task)

gevent.joinall(task_list) #任务列表里的任务(爬虫)开始工作

要点:

1. from gevent import monkey  最先import

2. 创建队列

3.把需要爬取的网址存入队列

4.创建任务列表

5.gevent.joinall(task_list)  开始工作

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ssson

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值