A long-running Python simulation looks like a compute problem as long as only one person is running it. The program sits on a machine that can handle it and produces an output when it finishes. If a run turns out slow or fails along the way, the fix is usually a bigger machine or a closer look at the traceback, which is annoying but manageable when you are the only one affected
That arrangement falls apart once other people depend on it. Several of them want to submit simulations, the jobs take hours, and requests arrive faster than they can finish. Some of the runs die halfway through, and sooner or later somebody asks for last month’s result and expects the same answer back. People also want to know whether their job is waiting, running, failed or done, and nobody wants one job interfering with another or machines burning money while the queue is empty. None of that has much to do with making the program faster.
So the question has changed.…