input: Write a python function to execute tasks concurrently using ThreadPoolExecutor.
  assert execute_tasks_concurrently(3, 2) == "Hello from python\nHello from python\n"
  assert execute_tasks_concurrently(1, 3) == "Hello from python\nHello from python\nHello from python\n"
  assert execute_tasks_concurrently(2, 1) == "Hello from python\nHello from python\n"
output: def execute_tasks_concurrently(num_tasks, num_workers):
      from concurrent.futures import ThreadPoolExecutor
      import threading
      
      def task():
          return "Hello from python\n"
      
      results = []
      with ThreadPoolExecutor(max_workers=num_workers) as executor:
          futures = [executor.submit(task) for _ in range(num_tasks)]
          for future in futures:
              results.append(future.result())
      
      return "".join(results)