#python #multithreading #python-multithreading
#python #многопоточность #python-многопоточность
Вопрос:
Я выполняю некоторую отладку процессора и просматриваю тепловую карту кода из vprof.
Темно-зеленая подсветка указывает на высокую загрузку процессора.
Что делает строка и когда она вызывается? Это из lock.acquire()
? Или это что-то от создания или объединения потоков?
Мой скрипт создает threading.Thread()
и использует некоторые глобальные блокировки.
Комментарии:
1. IIRC, получение блокировки = присоединение к потоку. Вся загрузка процессора подпотоком не учитывается в основном потоке, но при объединении вам все равно придется дождаться его завершения = в конечном итоге вы увидите эффект здесь. Например, если вы выполняете join () и для завершения подпотока требуется 10 секунд, основной поток ожидает 10 секунд получения блокировки. Чтобы действительно выяснить, почему это занимает так много времени, вам пришлось бы профилировать сам поток. Я не эксперт в потоковой обработке, так что, возможно, это не так, но недавно я столкнулся именно с такой ситуацией.