code: def test_world_rank(ray_start_4_cpus, tmp_path):
      def train_func():
          world_rank = train.get_context().get_world_rank()
          (tmp_path / f"{world_rank}").touch()
          train.report(dict(world_rank=world_rank))
  
      trainer = DataParallelTrainer(
          train_func, scaling_config=scale_config
      )
      trainer.fit()
  
      created_files = list(tmp_path.glob("*"))
      assert len(created_files) == 2
      assert {int(file.name) for file in created_files} == {0, 1}
  
imports: import os
  import time
  from unittest.mock import patch
  import pytest
  import ray
  from ray import train, tune
  from ray.train import RunConfig, ScalingConfig
  from ray.train._internal.backend_executor import BackendExecutor
  from ray.train._internal.worker_group import WorkerGroup
  from ray.train.backend import Backend, BackendConfig
  from ray.train.data_parallel_trainer import DataParallelTrainer
  from ray.train.tests.util import create_dict_checkpoint, load_dict_checkpoint
  from ray.tune.callback import Callback
  from ray.tune.tune_config import TuneConfig
  from ray.tune.tuner import Tuner
label_desc: Use image node_id 15 for calling a global function with example usage: test_world_rank(ray_start_4_cpus, tmp_path) without return types