python已协程方式处理任务
#从genent中导入monky模块① from gevent import monkey #把程序变成协程的方式运行② monkey.patch_all() import gevent,requests,time #导入requests和time start = time.time() #记录程序开始时间 url_list = [‘https://www.baidu.com/‘, ‘https://www.sina.com.cn/‘, ‘http://www.sohu.com/‘, ‘https://www.qq.com/‘, ‘https://www.163.com/‘, ‘http://www.iqiyi.com/‘, ‘https://www.tmall.com/‘, ‘http://www.ifeng.com/‘] #把8个网站封装成列表 def get_data(url): r = requests.get(url) # 用requests.get()函数爬取网站 print(url, time.time()-start,r.status_code) task_list=[] # 创建一个空列表 for url in url_list: # 用gevent里面的spawn函数创建任务 get_data是方法名,url是参数③ task=gevent.spawn(get_data,url) # 将创建的任务添加到task_list④ task_list.append(task) #执行任务列表中的所有任务⑤ gevent.joinall(task_list) end = time.time() #记录程序结束时间 print(end-start) #end-start是结束时间减去开始时间,就是最终所花时间。
使用队列,代码如下:
#从genent中导入monky模块① from gevent import monkey #把程序变成协程的方式运行② monkey.patch_all() import gevent,requests,time #从gevent库里导入queue模块 from gevent.queue import Queue #导入requests和time start = time.time() #记录程序开始时间 url_list = [‘https://www.baidu.com/‘, ‘https://www.sina.com.cn/‘, ‘http://www.sohu.com/‘, ‘https://www.qq.com/‘, ‘https://www.163.com/‘, ‘http://www.iqiyi.com/‘, ‘https://www.tmall.com/‘, ‘http://www.ifeng.com/‘] #把8个网站封装成列表 #创建队列对象,并赋值给work。 work=Queue() for url in url_list: # 用put_nowait()函数可以把网址都放进队列里。 work.put_nowait(url) def get_data(): # 当队列不是空的时候,就执行下面的程序。 while not work.empty(): # 用get_nowait()函数可以把队列里的网址都取出。 url=work.get_nowait() r = requests.get(url) # 用requests.get()函数爬取网站 qsize队列长度 print(url, work.qsize(),r.status_code) task_list=[] # 创建一个空列表 # 创建了2个爬虫 for x in range(2): # 用gevent里面的spawn函数创建任务 get_data是方法名 task=gevent.spawn(get_data) # 将创建的任务添加到task_list④ task_list.append(task) #执行任务列表中的所有任务⑤ gevent.joinall(task_list) end = time.time() #记录程序结束时间 print(end-start) #end-start是结束时间减去开始时间,就是最终所花时间。
相关推荐
efeve 2020-09-14
ericxieforever 2020-09-03
Dimples 2020-06-08
鲁鲁酱 2020-06-02
feishicheng 2020-05-31
paopao00 2020-05-10
georgeandgeorge 2020-05-09
Greatemperor 2020-05-03
jacktangj 2020-04-17
CloudXli 2020-04-07
oXiaoChong 2020-04-07
学习备忘录 2020-02-18
wyqwilliam 2020-02-10
PythonMaker 2020-01-19
ddxygq 2019-12-30
sschencn 2019-12-19
SDUTACM 2019-12-09
千锋 2019-12-07
Laozizuiku 2019-12-04
mayflowers 2019-11-18
wklken的笔记 2019-11-01