You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: Doc/library/sys.rst
+32-18Lines changed: 32 additions & 18 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -857,13 +857,38 @@ always available.
857
857
Set the system's profile function, which allows you to implement a Python source
858
858
code profiler in Python. See chapter :ref:`profile` for more information on the
859
859
Python profiler. The system's profile function is called similarly to the
860
-
system's trace function (see :func:`settrace`), but it isn't called for each
861
-
executed line of code (only on call and return, but the return event is reported
862
-
even when an exception has been set). The function is thread-specific, but
863
-
there is no way for the profiler to know about context switches between threads,
864
-
so it does not make sense to use this in the presence of multiple threads. Also,
860
+
system's trace function (see :func:`settrace`), but it is called with different events,
861
+
for example it isn't called for each executed line of code (only on call and return,
862
+
but the return event is reported even when an exception has been set). The function is
863
+
thread-specific, but there is no way for the profiler to know about context switches between
864
+
threads, so it does not make sense to use this in the presence of multiple threads. Also,
865
865
its return value is not used, so it can simply return ``None``.
866
866
867
+
Profile functions should have three arguments: *frame*, *event*, and
868
+
*arg*. *frame* is the current stack frame. *event* is a string: ``'call'``,
869
+
``'return'``, ``'c_call'``, ``'c_return'``, or ``'c_exception'``. *arg* depends
870
+
on the event type.
871
+
872
+
The events have the following meaning:
873
+
874
+
``'call'``
875
+
A function is called (or some other code block entered). The
876
+
profile function is called; *arg* is ``None``.
877
+
878
+
``'return'``
879
+
A function (or other code block) is about to return. The profile
880
+
function is called; *arg* is the value that will be returned, or ``None``
881
+
if the event is caused by an exception being raised.
882
+
883
+
``'c_call'``
884
+
A C function is about to be called. This may be an extension function or
885
+
a built-in. *arg* is the C function object.
886
+
887
+
``'c_return'``
888
+
A C function has returned. *arg* is the C function object.
889
+
890
+
``'c_exception'``
891
+
A C function has raised an exception. *arg* is the C function object.
867
892
868
893
.. function:: setrecursionlimit(limit)
869
894
@@ -890,8 +915,8 @@ always available.
890
915
891
916
Trace functions should have three arguments: *frame*, *event*, and
892
917
*arg*. *frame* is the current stack frame. *event* is a string: ``'call'``,
893
-
``'line'``, ``'return'``, ``'exception'``, ``'c_call'``, ``'c_return'``, or
894
-
``'c_exception'``. *arg* depends on the event type.
918
+
``'line'``, ``'return'`` or ``'exception'``. *arg* depends on
919
+
the event type.
895
920
896
921
The trace function is invoked (with *event* set to ``'call'``) whenever a new
897
922
local scope is entered; it should return a reference to a local trace
@@ -926,16 +951,6 @@ always available.
926
951
tuple ``(exception, value, traceback)``; the return value specifies the
927
952
new local trace function.
928
953
929
-
``'c_call'``
930
-
A C function is about to be called. This may be an extension function or
931
-
a built-in. *arg* is the C function object.
932
-
933
-
``'c_return'``
934
-
A C function has returned. *arg* is the C function object.
935
-
936
-
``'c_exception'``
937
-
A C function has raised an exception. *arg* is the C function object.
938
-
939
954
Note that as an exception is propagated down the chain of callers, an
940
955
``'exception'`` event is generated at each level.
941
956
@@ -1078,4 +1093,3 @@ always available.
1078
1093
.. rubric:: Citations
1079
1094
1080
1095
.. [C99] ISO/IEC 9899:1999. "Programming languages -- C." A public draft of this standard is available at http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1256.pdf\ .
0 commit comments