import requests
import time
defdownload_one(url):
resp = requests.get(url)print('Read {} from {}'.format(len(resp.content), url))defdownload_all(sites):for site in sites:
download_one(site)defmain():
start_time = time.perf_counter()
download_all(sites)
end_time = time.perf_counter()print('Download {} sites in {} seconds'.format(len(sites), end_time - start_time))if __name__ =='__main__':
main()
Read 190716 from https://www.tutorialspoint.com/python/index.htm
Read 360091 from https://www.w3schools.com/python/default.asp
Read 135028 from https://realpython.com/tutorials/python/
Read 79647 from https://www.programiz.com/python-programming/tutorial
Read 3082 from https://pythonbasics.org/learn-python/
Read 31649 from https://www.learnpython.org/
Read 15536 from https://www.datacamp.com/community/tutorials/python-data-science-handbook
Read 604652 from https://www.codecademy.com/learn/learn-python
Read 26062 from https://python-course.eu/python3_tutorial.phphttps://docs.python.org/3/tutorial/index.html
Download 9 sites in 32.739756299999996 seconds
Read 3082 from https://pythonbasics.org/learn-python/
Read 190716 from https://www.tutorialspoint.com/python/index.htm
Read 31649 from https://www.learnpython.org/Read 79647 from https://www.programiz.com/python-programming/tutorial
Read 15538 from https://www.datacamp.com/community/tutorials/python-data-science-handbook
Read 607295 from https://www.codecademy.com/learn/learn-python
Read 360091 from https://www.w3schools.com/python/default.asp
Read 26062 from https://python-course.eu/python3_tutorial.phphttps://docs.python.org/3/tutorial/index.html
Read 135028 from https://realpython.com/tutorials/python/
Download 9 sites in 43.716087200000004 seconds
增加future
import concurrent.futures
import requests
import time
defdownload_one(url):
resp = requests.get(url)print('Read {} from {}'.format(len(resp.content), url))return resp.content
defdownload_all(sites):with concurrent.futures.ThreadPoolExecutor(max_workers=5)as executor:
to_do =[]for site in sites:
future = executor.submit(download_one, site)
to_do.append(future)for future in concurrent.futures.as_completed(to_do):
future.result()#print(future.result())defmain():
start_time = time.perf_counter()
download_all(sites)
end_time = time.perf_counter()print('Download {} sites in {} seconds'.format(len(sites), end_time - start_time))if __name__ =='__main__':
main()
Read 3082 from https://pythonbasics.org/learn-python/
Read 190716 from https://www.tutorialspoint.com/python/index.htm
Read 15560 from https://www.datacamp.com/community/tutorials/python-data-science-handbook
Read 31649 from https://www.learnpython.org/
Read 79647 from https://www.programiz.com/python-programming/tutorial
Read 604638 from https://www.codecademy.com/learn/learn-python
Read 26062 from https://python-course.eu/python3_tutorial.phphttps://docs.python.org/3/tutorial/index.html
Read 135028 from https://realpython.com/tutorials/python/
Read 360091 from https://www.w3schools.com/python/default.asp
Download 9 sites in 25.880217799999997 seconds
SSL error in data received
protocol: <asyncio.sslproto.SSLProtocol object at 0x000001EEA10D89B0>
transport: <_SelectorSocketTransport fd=1800 read=polling write=<idle, bufsize=0>>
Traceback (most recent call last):
File "D:\Sdk\Anaconda3\lib\asyncio\sslproto.py", line 526, in data_received
ssldata, appdata = self._sslpipe.feed_ssldata(data)
File "D:\Sdk\Anaconda3\lib\asyncio\sslproto.py", line 207, in feed_ssldata
self._sslobj.unwrap()
File "D:\Sdk\Anaconda3\lib\ssl.py", line 767, in unwrap
return self._sslobj.shutdown()
ssl.SSLError: [SSL: KRB5_S_INIT] application data after close notify (_ssl.c:2609)
SSL error in data received
protocol: <asyncio.sslproto.SSLProtocol object at 0x000001EEA10D8748>
transport: <_SelectorSocketTransport fd=1732 read=polling write=<idle, bufsize=0>>
Traceback (most recent call last):
File "D:\Sdk\Anaconda3\lib\asyncio\sslproto.py", line 526, in data_received
ssldata, appdata = self._sslpipe.feed_ssldata(data)
File "D:\Sdk\Anaconda3\lib\asyncio\sslproto.py", line 207, in feed_ssldata
self._sslobj.unwrap()
File "D:\Sdk\Anaconda3\lib\ssl.py", line 767, in unwrap
return self._sslobj.shutdown()
ssl.SSLError: [SSL: KRB5_S_INIT] application data after close notify (_ssl.c:2609)
Read None from https://www.datacamp.com/community/tutorials/python-data-science-handbook
Read None from https://www.learnpython.org/
Read 32445 from https://www.tutorialspoint.com/python/index.htm
SSL error in data received
protocol: <asyncio.sslproto.SSLProtocol object at 0x000001EEA10D8550>
transport: <_SelectorSocketTransport fd=1828 read=polling write=<idle, bufsize=0>>
Traceback (most recent call last):
File "D:\Sdk\Anaconda3\lib\asyncio\sslproto.py", line 526, in data_received
ssldata, appdata = self._sslpipe.feed_ssldata(data)
File "D:\Sdk\Anaconda3\lib\asyncio\sslproto.py", line 207, in feed_ssldata
self._sslobj.unwrap()
File "D:\Sdk\Anaconda3\lib\ssl.py", line 767, in unwrap
return self._sslobj.shutdown()
ssl.SSLError: [SSL: KRB5_S_INIT] application data after close notify (_ssl.c:2609)
Read None from https://python-course.eu/python3_tutorial.phphttps://docs.python.org/3/tutorial/index.html
Read None from https://pythonbasics.org/learn-python/
Read None from https://www.programiz.com/python-programming/tutorial
Read None from https://www.w3schools.com/python/default.asp
SSL error in data received
protocol: <asyncio.sslproto.SSLProtocol object at 0x000001EEA0F76438>
transport: <_SelectorSocketTransport fd=1508 read=polling write=<idle, bufsize=0>>
Traceback (most recent call last):
File "D:\Sdk\Anaconda3\lib\asyncio\sslproto.py", line 526, in data_received
ssldata, appdata = self._sslpipe.feed_ssldata(data)
File "D:\Sdk\Anaconda3\lib\asyncio\sslproto.py", line 207, in feed_ssldata
self._sslobj.unwrap()
File "D:\Sdk\Anaconda3\lib\ssl.py", line 767, in unwrap
return self._sslobj.shutdown()
ssl.SSLError: [SSL: KRB5_S_INIT] application data after close notify (_ssl.c:2609)
SSL error in data received
protocol: <asyncio.sslproto.SSLProtocol object at 0x000001EEA0FC6710>
transport: <_SelectorSocketTransport fd=1764 read=polling write=<idle, bufsize=0>>
Traceback (most recent call last):
File "D:\Sdk\Anaconda3\lib\asyncio\sslproto.py", line 526, in data_received
ssldata, appdata = self._sslpipe.feed_ssldata(data)
File "D:\Sdk\Anaconda3\lib\asyncio\sslproto.py", line 207, in feed_ssldata
self._sslobj.unwrap()
File "D:\Sdk\Anaconda3\lib\ssl.py", line 767, in unwrap
return self._sslobj.shutdown()
ssl.SSLError: [SSL: KRB5_S_INIT] application data after close notify (_ssl.c:2609)
SSL error in data received
protocol: <asyncio.sslproto.SSLProtocol object at 0x000001EEA0FC6AC8>
transport: <_SelectorSocketTransport fd=1824 read=polling write=<idle, bufsize=0>>
Traceback (most recent call last):
File "D:\Sdk\Anaconda3\lib\asyncio\sslproto.py", line 526, in data_received
ssldata, appdata = self._sslpipe.feed_ssldata(data)
File "D:\Sdk\Anaconda3\lib\asyncio\sslproto.py", line 207, in feed_ssldata
self._sslobj.unwrap()
File "D:\Sdk\Anaconda3\lib\ssl.py", line 767, in unwrap
return self._sslobj.shutdown()
ssl.SSLError: [SSL: KRB5_S_INIT] application data after close notify (_ssl.c:2609)
Read None from https://www.codecademy.com/learn/learn-python
SSL error in data received
protocol: <asyncio.sslproto.SSLProtocol object at 0x000001EEA0FB6BE0>
transport: <_SelectorSocketTransport fd=1788 read=polling write=<idle, bufsize=0>>
Traceback (most recent call last):
File "D:\Sdk\Anaconda3\lib\asyncio\sslproto.py", line 526, in data_received
ssldata, appdata = self._sslpipe.feed_ssldata(data)
File "D:\Sdk\Anaconda3\lib\asyncio\sslproto.py", line 207, in feed_ssldata
self._sslobj.unwrap()
File "D:\Sdk\Anaconda3\lib\ssl.py", line 767, in unwrap
return self._sslobj.shutdown()
ssl.SSLError: [SSL: KRB5_S_INIT] application data after close notify (_ssl.c:2609)
Read None from https://realpython.com/tutorials/python/
Download 9 sites in 22.620816800000057 seconds