From 3db96b6bd266b5226347ff4e643d83d6649928d5 Mon Sep 17 00:00:00 2001 From: M Bussonnier Date: Mon, 3 Aug 2026 13:19:58 +0200 Subject: [PATCH] Add env var to shut down kernel immediately after start for benchmarking Setting IPYKERNEL_BENCHMARK_STARTUP_SHUTDOWN stops the event loop right after it starts, so total process wall-clock time measures kernel startup without needing an actual client to send a shutdown request. This can be used in conjunction with -X importtime and profile viewer like tuna to work on speeding up importing and starting a kernel --- ipykernel/kernelapp.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/ipykernel/kernelapp.py b/ipykernel/kernelapp.py index b6e8b59a1..61347c9b0 100644 --- a/ipykernel/kernelapp.py +++ b/ipykernel/kernelapp.py @@ -755,6 +755,10 @@ def start(self): self.poller.start() self.kernel.start() self.io_loop = ioloop.IOLoop.current() + if os.environ.get("IPYKERNEL_BENCHMARK_STARTUP_SHUTDOWN"): + # Shut down immediately after entering the event loop, for + # benchmarking kernel startup time end-to-end. + self.io_loop.add_callback(self.io_loop.stop) if self.trio_loop: from ipykernel.trio_runner import TrioRunner