code: def check_urls(urls):
      '''
      expected format of urls is list of tuples (url, file name, source line) i.e. ("google.com", "index.html", 32)
      '''
      threads = list()
      progress_bar = None
      progress_counter = 0
  
      if SHOW_PROGRESS_BAR and len(urls) > 0:
  
          widgets = [SimpleProgress()]
          progress_bar = ProgressBar(widgets=widgets, maxval=len(urls)).start()
  
      for u in urls:
          t = Thread(target=async_check_url, args=(u[0], u[1], u[2]))
          t.start()
          threads.append(t)
  
      for thread in threads:
          if SHOW_PROGRESS_BAR and len(urls) > 0:
              progress_counter = progress_counter + 1
              progress_bar.update(progress_counter)
  
          thread.join()
  
      if SHOW_PROGRESS_BAR and len(urls) > 0:
          progress_bar.finish(f check_urls(urls):
      '''
      expected format of urls is list of tuples (url, file name, source line) i.e. ("google.com", "index.html", 32)
      '''
      threads = list()
      progress_bar = None
      progress_counter = 0
  
      if SHOW_PROGRESS_BAR and len(urls) > 0:
  
          widgets = [SimpleProgress()]
          progress_bar = ProgressBar(widgets=widgets, maxval=len(urls)).start()
  
      for u in urls:
          t = Thread(target=async_check_url, args=(u[0], u[1], u[2]))
          t.start()
          threads.append(t)
  
      for thread in threads:
          if SHOW_PROGRESS_BAR and len(urls) > 0:
              progress_counter = progress_counter + 1
              progress_bar.update(progress_counter)
  
          thread.join()
  
      if SHOW_PROGRESS_BAR and len(urls) > 0:
          progress_bar.finish()
docs: expected format of urls is list of tuples (url, file name, source line) i.e. ("google.com", "index.html", 32)