Python Glossary English

Python 3.12+threadingфункция

threading.setprofile_all_threads()

трассировка и профилирование

Ставит функцию профилирования во все потоки сразу — и уже работающие, включая текущий, и те, что запустят позже (с Python 3.12).

Синтаксис

threading.setprofile_all_threads(func)

Отличие от setprofile(): тот действует только на будущие потоки, а эта функция вдобавок вызывает sys.setprofile во всех работающих потоках интерпретатора. Снять профилировщик отовсюду — setprofile_all_threads(None). До 3.12 её нет, и приходится сочетать threading.setprofile() с sys.setprofile() внутри каждого потока.

Примеры

import sys
import threading
def prof(frame, event, arg):
    pass
started, go, seen = threading.Event(), threading.Event(), []
def worker():
    started.set()
    go.wait()
    seen.append(sys.getprofile() is prof)
t = threading.Thread(target=worker)
t.start()
started.wait()
threading.setprofile_all_threads(prof)  # поток уже работает
print(sys.getprofile() is prof)  # → True
go.set()
t.join()
threading.setprofile_all_threads(None)
print(seen, sys.getprofile())  # → [True] None

См. также

Открыть в полном глоссарииdocs.python.orgСообщить о неточности