diff options
Diffstat (limited to 'docs/examples/userguide/fusedtypes/conditional_gil.pyx')
-rw-r--r-- | docs/examples/userguide/fusedtypes/conditional_gil.pyx | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/docs/examples/userguide/fusedtypes/conditional_gil.pyx b/docs/examples/userguide/fusedtypes/conditional_gil.pyx new file mode 100644 index 000000000..473132f2e --- /dev/null +++ b/docs/examples/userguide/fusedtypes/conditional_gil.pyx @@ -0,0 +1,15 @@ +cimport cython + +ctypedef fused double_or_object: + double + object + +def increment(double_or_object x): + with nogil(double_or_object is not object): + # Same code handles both cython.double (GIL is released) + # and python object (GIL is not released). + x = x + 1 + return x + +increment(5.0) # GIL is released during increment +increment(5) # GIL is acquired during increment |