code: def _get_all_plugin_info(tasks):
      num_tasks = len(tasks)
  
      if num_tasks == 0:
          return []
  
      if num_tasks == 1:
          return [_do_get_plugin_info(tasks[0])]
  
      num_workers = fou.recommend_thread_pool_workers(min(num_tasks, 4))
  
      info = []
      with multiprocessing.dummy.Pool(processes=num_workers) as pool:
          for d in pool.imap_unordered(_do_get_plugin_info, tasks):
              info.append(d)
  
      return info
  
file_path: fiftyone/fiftyone/plugins/utils.py
imports: import logging
  import multiprocessing.dummy
  import os
  from bs4 import BeautifulSoup
  import yaml
  import fiftyone.core.utils
  from fiftyone.utils.github import GitHubRepository
  from fiftyone.plugins.core import PLUGIN_METADATA_FILENAMES
label_desc: Use image node_id 4 for calling a global function with example usage: _get_all_plugin_info(tasks) and returns: info, list, list