code: def worker():
    
  
    import torch
    import torch.distributed as dist
    from torch.multiprocessing import Process
    import numpy as np
  
    print("Initializing distributed pytorch")
    os.environ['MASTER_ADDR'] = str(args.master_addr)
    os.environ['MASTER_PORT'] = str(args.master_port)
    # Use TCP backend. Gloo needs nightly, where it currently fails with
    #     dist.init_process_group('gloo', rank=args.rank,
    #   AttributeError: module 'torch.distributed' has no attribute 'init_process_group'
    dist.init_process_group('tcp', rank=args.rank,
                            world_size=args.size)
  
    tensor = torch.ones(args.size_mb*250*1000)*(args.rank+1)
    time_list = []
    outfile = 'out' if args.rank == 0 else '/dev/null'
    log = util.FileLogger(outfile)
    for i in range(args.iters):
      # print('before: rank ', args.rank, ' has data ', tensor[0])
  
      start_time = time.perf_counter()
      if args.rank == 0:
        dist.send(tensor=tensor, dst=1)
      else:
        dist.recv(tensor=tensor, src=0)
        
      elapsed_time_ms = (time.perf_counter() - start_time)*1000
      time_list.append(elapsed_time_ms)
      # print('after: rank ', args.rank, ' has data ', tensor[0])
      rate = args.size_mb/(elapsed_time_ms/1000)
  
      log('%03d/%d added %d MBs in %.1f ms: %.2f MB/second' % (i, args.iters, args.size_mb, elapsed_time_ms, rate))
  
    min = np.min(time_list)
    median = np.median(time_list)
    log(f"min: {min:8.2f}, median: {median:8.2f}, mean: {np.mean(time_list):8.2f}")
docs: Initialize the distributed environment.