如果用计算机里的概念来解释这件事的话:在一个任务未完成时,就可以执行其他多个任务,彼此不受影响(在看第一部下载好的电影时,其他电影继续保持下载状态,彼此之间不受影响),叫异步。
有异步的概念,那应该也有同步的概念吧?是的,同步就是一个任务结束才能启动下一个(类比你看完一部电影,才能去看下一部电影)。
显然,异步执行任务会比同步更加节省时间,因为它能减少不必要的等待。如果你需要对时间做优化,异步是一个很值得考虑的方案。
headers ={'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36'}
from gevent import monkey
monkey.patch_all()
import gevent,time,requests
from gevent.queue import Queue
start = time.time()
work = Queue()
url_1='https://ieeexplore.ieee.org/search/searchresult.jsp?newsearch=true&queryText=semantic%20SLAM&highlight=true&returnType=SEARCH&matchPubs=true&pageNumber=1&returnFacets=ALL'
work.put_nowait(url_1)
url_2='https://ieeexplore.ieee.org/search/searchresult.jsp?newsearch=true&queryText=semantic%20SLAM&highlight=true&returnType=SEARCH&matchPubs=true&pageNumber='
end_url_2='&returnFacets=ALL'
for x in range(2,11):
real_url = url_2+str(x)+end_url_2
work.put_nowait(real_url)
def crawler():
while not work.empty():
url = work.get_nowait()
r = requests.get(url)
print(url,work.qsize(),r.status_code)
tasks_list = [ ]
for x in range(2):
task = gevent.spawn(crawler)
tasks_list.append(task)
gevent.joinall(tasks_list)
end = time.time()
print(end-start)
错误,汉字符号问题,找前后代码,复制粘贴最易出错。