Skip to content

Commit a19f3ea

Browse files
committed
fixup! Remove default duration
1 parent a27bd2e commit a19f3ea

File tree

3 files changed

+14
-14
lines changed

3 files changed

+14
-14
lines changed

Doc/library/profiling.sampling.rst

Lines changed: 9 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -241,8 +241,8 @@ is unaware it is being profiled.
241241
When profiling production systems, keep these guidelines in mind:
242242

243243
Start with shorter durations (10-30 seconds) to get quick results, then extend
244-
if you need more statistical accuracy. The default 10-second duration is usually
245-
sufficient to identify major hotspots.
244+
if you need more statistical accuracy. By default, profiling runs until the
245+
target process completes, which is usually sufficient to identify major hotspots.
246246

247247
If possible, profile during representative load rather than peak traffic.
248248
Profiles collected during normal operation are easier to interpret than those
@@ -329,7 +329,7 @@ The default configuration works well for most use cases:
329329
* - Default for ``--sampling-rate`` / ``-r``
330330
- 1 kHz
331331
* - Default for ``--duration`` / ``-d``
332-
- 10 seconds
332+
- Run to completion
333333
* - Default for ``--all-threads`` / ``-a``
334334
- Main thread only
335335
* - Default for ``--native``
@@ -363,15 +363,14 @@ cost of slightly higher profiler CPU usage. Lower rates reduce profiler
363363
overhead but may miss short-lived functions. For most applications, the
364364
default rate provides a good balance between accuracy and overhead.
365365

366-
The :option:`--duration` option (:option:`-d`) sets how long to profile in seconds. The
367-
default is 10 seconds::
366+
The :option:`--duration` option (:option:`-d`) sets how long to profile in seconds. By
367+
default, profiling continues until the target process exits or is interrupted::
368368

369369
python -m profiling.sampling run -d 60 script.py
370370

371-
Longer durations collect more samples and produce more statistically reliable
372-
results, especially for code paths that execute infrequently. When profiling
373-
a program that runs for a fixed time, you may want to set the duration to
374-
match or exceed the expected runtime.
371+
Specifying a duration is useful when attaching to long-running processes or when
372+
you want to limit profiling to a specific time window. When profiling a script,
373+
the default behavior of running to completion is usually what you want.
375374

376375

377376
Thread selection
@@ -1394,7 +1393,7 @@ Sampling options
13941393

13951394
.. option:: -d <seconds>, --duration <seconds>
13961395

1397-
Profiling duration in seconds. Default: 10.
1396+
Profiling duration in seconds. Default: run to completion.
13981397

13991398
.. option:: -a, --all-threads
14001399

Lib/profiling/sampling/cli.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1107,7 +1107,7 @@ def _handle_live_run(args):
11071107
if process.poll() is None:
11081108
process.terminate()
11091109
try:
1110-
process.wait(timeout=_PROCESS_KILL_TIMEOUT)
1110+
process.wait(timeout=_PROCESS_KILL_TIMEOUT_SEC)
11111111
except subprocess.TimeoutExpired:
11121112
process.kill()
11131113
process.wait()

Lib/profiling/sampling/sample.py

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -363,7 +363,7 @@ def sample(
363363
pid,
364364
collector,
365365
*,
366-
duration_sec=10,
366+
duration_sec=None,
367367
all_threads=False,
368368
realtime_stats=False,
369369
mode=PROFILING_MODE_WALL,
@@ -378,7 +378,8 @@ def sample(
378378
Args:
379379
pid: Process ID to sample
380380
collector: Collector instance to use for gathering samples
381-
duration_sec: How long to sample for (seconds)
381+
duration_sec: How long to sample for (seconds), or None to run until
382+
the process exits or interrupted
382383
all_threads: Whether to sample all threads
383384
realtime_stats: Whether to print real-time sampling statistics
384385
mode: Profiling mode - WALL (all samples), CPU (only when on CPU),
@@ -427,7 +428,7 @@ def sample_live(
427428
pid,
428429
collector,
429430
*,
430-
duration_sec=10,
431+
duration_sec=None,
431432
all_threads=False,
432433
realtime_stats=False,
433434
mode=PROFILING_MODE_WALL,

0 commit comments

Comments
 (0)