polaris.run.executor.start_step

polaris.run.executor.start_step(step, reservation: Reservation, log_filename: str, local_node: str) → RunningStep[source]

Start one step in a forked child.

The child inherits this process’s address space, so it holds every module already imported and the live step object, and reads nothing from disk to get going. That is what makes starting a step cost almost nothing; a fresh polaris serial subprocess cost 35 s of imports and unpickling, which was more than the median step’s actual work.

Parameters:
  • step (polaris.Step) – The step to run, which must already be set up and sized

  • reservation (polaris.run.pool.Reservation) – What the pool gave it

  • log_filename (str) – Where to send its output. Steps run at the same time, so they cannot share a stream and be read afterwards.

  • local_node (str) – The node the scheduler is on, which is the only one whose cores a child can bind itself to

Returns:

running (polaris.run.executor.RunningStep) – The started step