user7375796
user7375796

Reputation: 45

CPU usage of python script

Is it possible to check CPU usage of simple script ?

For example: How to get the CPU usage in % of printing 100 times "hello world!" ?

Currently I'm getting the execution time in the console, by:

time -p python script.py

Upvotes: 2

Views: 17811

Answers (3)

dsomel21
dsomel21

Reputation: 626

This will not calculate the CPU usage, but the execution time. Use timeit and find the difference in the initial time of the execution and the end of the program. For example:

import timeit
start_time = timeit.default_timer()
print("Hello World")
print("Hello World")
print("Hello World")
end_time = timeit.default_timer()
print (end_time - start_time)

Upvotes: -1

cs95
cs95

Reputation: 403208

If you are on a unix machine, you could always open top in a new terminal and then observe the % usage while you run your python program. Alternatively, there are some 3rd party libraries you can use.

Here's one: Benchmark

Examples (taken from the py package index).

Program:

from benchmarker import Benchmarker

## specify number of loop
with Benchmarker(1000*1000, width=20) as bench:
    s1, s2, s3, s4, s5 = "Haruhi", "Mikuru", "Yuki", "Itsuki", "Kyon"

    @bench(None)                ## empty loop
    def _(bm):
        for i in bm:
            pass

    @bench("join")
    def _(bm):
        for i in bm:
            sos = ''.join((s1, s2, s3, s4, s5))

    @bench("concat")
    def _(bm):
        for i in bm:
            sos = s1 + s2 + s3 + s4 + s5

    @bench("format")
    def _(bm):
        for i in bm:
            sos = '%s%s%s%s%s' % (s1, s2, s3, s4, s5)

Results:

$ python example.py -h              # show help
$ python example.py -o result.json
## benchmarker:         release 4.0.0 (for python)
## python version:      3.4.2
## python compiler:     GCC 4.8.2
## python platform:     Linux-3.13.0-36-generic-x86_64-with-debian-jessie-sid
## python executable:   /opt/vs/python/3.4.2/bin/python
## cpu model:           Intel(R) Xeon(R) CPU E5-2670 v2 @ 2.50GHz  # 2494.050 MHz
## parameters:          loop=1000000, cycle=1, extra=0

##                        real    (total    = user    + sys)
(Empty)                 0.0236    0.0200    0.0200    0.0000
join                    0.2779    0.2800    0.2800    0.0000
concat                  0.3792    0.3800    0.3800    0.0000
format                  0.4233    0.4300    0.4300    0.0000

## Ranking                real
join                    0.2779  (100.0) ********************
concat                  0.3792  ( 73.3) ***************
format                  0.4233  ( 65.6) *************

## Matrix                 real    [01]    [02]    [03]
[01] join               0.2779   100.0   136.5   152.3
[02] concat             0.3792    73.3   100.0   111.6
[03] format             0.4233    65.6    89.6   100.0

Upvotes: 3

Krohnus Melavea
Krohnus Melavea

Reputation: 152

You'll need the psutil module.

import psutil
print(psutil.cpu_percent())

Upvotes: 2

Related Questions