Какой профайлер для Python работает в режиме реального времени?
Добрый день, есть приложение работающее с модулем vk api "vk_api" и логами в нескольких потоках "threading" в фоне, на каждого пользователя по 2-3 потока. После совершения какого либо действия через api, в потоке срабатывает time.sleep что бы обойти лимит по количеству запросов.
Так вот в чем проблема, при количестве пользователей ~ >3 (6-9 потоков) в течении первых минут 20 приложение работает удовлетворительно, но где то через 20 минут начинает съедаться много оперативной памяти и приложение начинает тормозить с отправкой запросов. Чем больше пользователей программа обрабатывает, тем быстрее начинает тормозить.
Есть подозрения что где то идет утечка памяти, но так как я в Python новичок то не могу понять где.
Нужен профайлер для определения на что со временем тратится много памяти отображаемый информацию в режиме реального времени, так как приложение по задумке работает в бесконечном цикле в фоне. А cProfile насколько я понимаю отрабатывает только после завершения приложения.
Вот его вывод в консоль:
Partition of a set of 25964 objects. Total size = 3332848 bytes.
Index Count % Size % Cumulative % Kind (class / dict of class)
0 11843 46 939816 28 939816 28 str
1 5836 22 470288 14 1410104 42 tuple
2 330 1 279408 8 1689512 51 dict (no owner)
3 69 0 213624 6 1903136 57 dict of module
4 199 1 210856 6 2113992 63 dict of type
5 1632 6 208896 6 2322888 70 types.CodeType
6 1596 6 191520 6 2514408 75 function
7 199 1 177008 5 2691416 81 type
8 124 0 135328 4 2826744 85 dict of class
9 1045 4 83600 3 2910344 87 __builtin__.wrapper_descriptor
<90 more rows. Type e.g. '_.more' to view.>
Но единственное что менялось это Total size = 3332848 bytes. Он все время увеличивался, то что растет потребление памяти это понятно. Но вот где он растят я не вижу из этого лога(