record and compare time to make 10 API requests
This commit is contained in:
parent
a9624b98ab
commit
e7aafdb917
|
@ -0,0 +1,67 @@
|
|||
import requests
|
||||
from time import time
|
||||
from threading import Thread
|
||||
|
||||
# This example shows how downloading multiple images from the
|
||||
# internet can be sped up using multiple threads. We are just
|
||||
# getting JSON responses and recording the time taken in each
|
||||
# example
|
||||
|
||||
# Images are being download from the pexels.com API
|
||||
|
||||
from pexels_api_key import API_KEY
|
||||
|
||||
|
||||
api_url = 'https://api.pexels.com/v1/search?query='
|
||||
queries = ['people', 'cars', 'landscpapes', 'pets',
|
||||
'tech', 'food', 'books', 'sports', 'games', 'plants']
|
||||
|
||||
|
||||
def download_images(query):
|
||||
full_url = f'{api_url}{query}'
|
||||
headers = {'Authorization': API_KEY}
|
||||
requests.get(full_url, data=None, headers=headers)
|
||||
|
||||
|
||||
# Sequential Example
|
||||
|
||||
def record_seq_time():
|
||||
t0 = time()
|
||||
print('\nDownloading images sequentially')
|
||||
for query in queries:
|
||||
download_images(query=query)
|
||||
t1 = time()
|
||||
print('Download complete')
|
||||
return f'{t1-t0:.2f}s'
|
||||
|
||||
|
||||
# Threaded example - no need to wait for a response before sending the next request
|
||||
|
||||
|
||||
def record_con_time():
|
||||
t0 = time()
|
||||
threads = []
|
||||
print('\nDownloading images using multiple threads')
|
||||
for query in queries:
|
||||
thread = Thread(target=download_images, args=(query,))
|
||||
threads.append(thread)
|
||||
thread.start()
|
||||
for thread in threads:
|
||||
thread.join()
|
||||
t1 = time()
|
||||
print('Download complete')
|
||||
return f'{t1-t0:.2f}'
|
||||
|
||||
|
||||
|
||||
def main():
|
||||
seq_time = record_seq_time()
|
||||
con_time = record_con_time()
|
||||
print('\n=======================================================')
|
||||
print(f'Sequential download completed in {seq_time}')
|
||||
print(f'Multi-threaded download completed in {con_time}') # this is significantly faster
|
||||
print('=======================================================')
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
main()
|
Loading…
Reference in New Issue