code: def start_in_keepedalive_processes(obj, nb_process):
      
      processes = []
      readers_pipes = []
      writers_pipes = []
      for i in range(nb_process):
          # Start process with Pipes for communicate
          local_read_pipe, local_write_pipe = Pipe(duplex=False)
          process_read_pipe, process_write_pipe = Pipe(duplex=False)
          readers_pipes.append(local_read_pipe)
          writers_pipes.append(process_write_pipe)
          p = Process(target=run_keepedalive_process, args=(local_write_pipe, process_read_pipe, obj))
          p.start()
          processes.append(p)
      # Send to process some job to do
      for job in range(3):
          print('send new job to processes:')
          for process_number in range(nb_process):
              # Send data to process
              writers_pipes[process_number].send(obj)
              reader_useds = []
          # Wait response from processes
          while readers_pipes:
              for r in wait(readers_pipes):
                  try:
                      r.recv()
                  except EOFError:
                      pass
                  finally:
                      reader_useds.append(r)
                      readers_pipes.remove(r)
          readers_pipes = reader_useds
  
      # Kill processes
      for writer_pipe in writers_pipes:
          writer_pipe.send('stop')
docs: Start nb_process and keep them alive. Send job to them multiple times, then close thems.