mirror of
https://github.com/python/cpython.git
synced 2025-08-25 11:15:02 +00:00
Add settrace() and setprofile() functions to the threading library.
This commit is contained in:
parent
c98ccfd29f
commit
bfccb35b58
2 changed files with 34 additions and 0 deletions
|
@ -90,6 +90,20 @@ subclassed in a limited fashion.
|
||||||
A thread that executes a function after a specified interval has passed.
|
A thread that executes a function after a specified interval has passed.
|
||||||
\end{classdesc*}
|
\end{classdesc*}
|
||||||
|
|
||||||
|
\begin{funcdesc}{settrace}{func}
|
||||||
|
Set a trace function \index{trace function} for all threads started
|
||||||
|
from the \module{threading} module. The \var{func} will be passed to
|
||||||
|
\cfuntion{sys.settrace} for each thread, before its \method{run}
|
||||||
|
method is called.
|
||||||
|
\end{funcdesc}
|
||||||
|
|
||||||
|
\begin{funcdesc}{setprofile}{func}
|
||||||
|
Set a profile function \index{profile function} for all threads started
|
||||||
|
from the \module{threading} module. The \var{func} will be passed to
|
||||||
|
\cfuntion{sys.setprofile} for each thread, before its \method{run}
|
||||||
|
method is called.
|
||||||
|
\end{funcdesc}
|
||||||
|
|
||||||
Detailed interfaces for the objects are documented below.
|
Detailed interfaces for the objects are documented below.
|
||||||
|
|
||||||
The design of this module is loosely based on Java's threading model.
|
The design of this module is loosely based on Java's threading model.
|
||||||
|
|
|
@ -52,6 +52,18 @@ else:
|
||||||
def _note(self, *args):
|
def _note(self, *args):
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
# Support for profile and trace hooks
|
||||||
|
|
||||||
|
_profile_hook = None
|
||||||
|
_trace_hook = None
|
||||||
|
|
||||||
|
def setprofile(func):
|
||||||
|
global _profile_hook
|
||||||
|
_profile_hook = func
|
||||||
|
|
||||||
|
def settrace(func):
|
||||||
|
global _trace_hook
|
||||||
|
_trace_hook = func
|
||||||
|
|
||||||
# Synchronization classes
|
# Synchronization classes
|
||||||
|
|
||||||
|
@ -408,6 +420,14 @@ class Thread(_Verbose):
|
||||||
_active_limbo_lock.release()
|
_active_limbo_lock.release()
|
||||||
if __debug__:
|
if __debug__:
|
||||||
self._note("%s.__bootstrap(): thread started", self)
|
self._note("%s.__bootstrap(): thread started", self)
|
||||||
|
|
||||||
|
if _trace_hook:
|
||||||
|
self._note("%s.__bootstrap(): registering trace hook", self)
|
||||||
|
_sys.settrace(_trace_hook)
|
||||||
|
if _profile_hook:
|
||||||
|
self._note("%s.__bootstrap(): registering profile hook", self)
|
||||||
|
_sys.setprofile(_profile_hook)
|
||||||
|
|
||||||
try:
|
try:
|
||||||
self.run()
|
self.run()
|
||||||
except SystemExit:
|
except SystemExit:
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue