docs: def get_lyrics_threaded(song, l_sources=None):
      """
      Launches a pool of threads to search for the lyrics of a single song.
  
      The optional parameter 'sources' specifies an alternative list of sources.
      If not present, the main list will be used.
      """
      if l_sources is None:
          l_sources = sources
  
      if song.lyrics and not CONFIG['overwrite']:
          logger.debug('%s already has embedded lyrics', song)
          return None
  
      runtimes = {}
      queue = Queue()
      pool = [LyrThread(source, song, queue) for source in l_sources]
      for thread in pool:
          thread.start()
  
      for _ in range(len(pool)):
          result = queue.get()
          runtimes[result['source']] = result['runtime']
          if result['lyrics']:
              break
  
      if result['lyrics']:
          song.lyrics = result['lyrics']
          source = result['source']
      else:
          source = None
  
      return Result(song, source, runtimes)