I've got a multi-threaded Python application, and I'm currently troubleshooting very high (90% or more) CPU usage.
I'm going to be trying out the profiler, but I wanted to see if there is a way I can get CPU usage per thread from within the application. I understand that os.times() will get CPU usage overall - is there something I can run from within each thread to get each thread's usage? It would be very helpful to determine which thread is eating CPU.
Or you can simply use yappi. (https://code.google.com/p/yappi/) It transparently uses GetThreadTimes() if CPU clock type is selected for profiling. It will show you CPU time of a running thread.
See here also for an example: https://code.google.com/p/yappi/wiki/YThreadStats_v082
Other than the profiler, I don't think Python has much built-in for monitoring individual thread CPU usage. Also, this post provides an example of a simple implementation of a thread profiler. It appears mainly geared towards Unix-based systems, but it's a start.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With