Advertisement
Guest User

Untitled

a guest
Nov 21st, 2017
285
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.23 KB | None | 0 0
  1. import queue
  2.  
  3. class DownloadThread(Thread):
  4.  
  5.     def __init__(self, queue, name):
  6.         super().__init__()
  7.         self.queue = queue
  8.         self.name = name
  9.    
  10.     def run(self):
  11.         while True:
  12.             url = self.queue.get()
  13.             fname = os.path.basename(url)
  14.            
  15.             res = requests.get(url, stream=True)
  16.             res.raise_for_status()        
  17.        
  18.             with open(fname, "wb") as savefile:
  19.                 for chunk in res.iter_content(1024):
  20.                     savefile.write(chunk)
  21.                    
  22.             self.queue.task_done()
  23.             print(f"{self.name} finished downloading {url} !")
  24.  
  25.  
  26. def main(urls):
  27.     q = queue.Queue()
  28.     threads = [DownloadThread(q, f"Thread {i + 1}") for i in range(2)]
  29.     for t in threads:
  30.         # not waiting for child threads
  31.         t.setDaemon(True)
  32.         t.start()
  33.    
  34.     for url in urls:
  35.         q.put(url)
  36.        
  37.     q.join()  # all cheeki-breeki
  38.  
  39. main([
  40.     "http://www.irs.gov/pub/irs-pdf/f1040.pdf",
  41.     "http://www.irs.gov/pub/irs-pdf/f1040a.pdf",
  42.     "http://www.irs.gov/pub/irs-pdf/f1040ez.pdf",
  43.     "http://www.irs.gov/pub/irs-pdf/f1040es.pdf",
  44.     "http://www.irs.gov/pub/irs-pdf/f1040sb.pdf"
  45. ])
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement