diff options
author | Pablo Galindo <Pablogsal@gmail.com> | 2018-01-29 20:37:09 (GMT) |
---|---|---|
committer | Raymond Hettinger <rhettinger@users.noreply.github.com> | 2018-01-29 20:37:09 (GMT) |
commit | 72a0d218dcc94a3cc409a9ef32dfcd5a7bbcb43c (patch) | |
tree | dce812414bdc6029522a92a6afd10dd00fdc8f06 /Doc | |
parent | 0cd6bca65519109a8a7862d38ba1b8924e432a16 (diff) | |
download | cpython-72a0d218dcc94a3cc409a9ef32dfcd5a7bbcb43c.zip cpython-72a0d218dcc94a3cc409a9ef32dfcd5a7bbcb43c.tar.gz cpython-72a0d218dcc94a3cc409a9ef32dfcd5a7bbcb43c.tar.bz2 |
bpo-31356: Add context manager to temporarily disable GC (GH-4224)
Diffstat (limited to 'Doc')
-rw-r--r-- | Doc/library/gc.rst | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/Doc/library/gc.rst b/Doc/library/gc.rst index 153d8fb..92240c7 100644 --- a/Doc/library/gc.rst +++ b/Doc/library/gc.rst @@ -33,6 +33,34 @@ The :mod:`gc` module provides the following functions: Disable automatic garbage collection. +.. class:: ensure_disabled() + + Return a context manager object that disables the garbage collector and reenables the previous + state upon completion of the block. This is basically equivalent to:: + + from gc import enable, disable, isenabled + + @contextmanager + def ensure_disabled(): + was_enabled_previously = isenabled() + gc.disable() + yield + if was_enabled_previously: + gc.enable() + + And lets you write code like this:: + + with ensure_disabled(): + run_some_timing() + + with ensure_disabled(): + # do_something_that_has_real_time_guarantees + # such as a pair trade, robotic braking, etc + + without needing to explicitly enable and disable the garbage collector yourself. + This context manager is implemented in C to assure atomicity, thread safety and speed. + + .. function:: isenabled() Returns true if automatic collection is enabled. |