Simulate CPU load with Python

Simulate CPU load with Python

While testing out some home automation code on my Raspberry Pi I noticed it was pretty CPU intensive. Time to bump up the overclock to squeeze more performance out of the Broadcom Arm7 processor. I wanted to keep an eye on temps as well as stability under full load so I needed to simulate CPU usage.

This small Python script will do the job. It uses the multiprocessing library which you can read more about here.

#!/usr/bin/env python
"""
Produces load on all available CPU cores
"""
from multiprocessing import Pool
from multiprocessing import cpu_count

def f(x):
    while True:
        x*x

if __name__ == '__main__':
    processes = cpu_count()
    print '-' * 20
    print 'Running load on CPU'
    print 'Utilizing %d cores' % processes
    print '-' * 20
    pool = Pool(processes)
    pool.map(f, range(processes))

This will utilize each CPU core and produce ~100% load with the while loops calculation.

--------------------
Running load on CPU...
Utilizing 8 cores
--------------------

1 thought on “Simulate CPU load with Python”

  1. This creates a bunch of zombie processes. To avoid that:

    #!/usr/bin/env python
    “””
    Produces load on all available CPU cores
    # http://danielflannery.ie/simulate-cpu-load-with-python/
    “””
    from multiprocessing import Pool
    from multiprocessing import cpu_count

    import signal

    stop_loop = 0

    def exit_chld(x,y):
    global stop_loop
    stop_loop = 1

    def f(x):
    global stop_loop
    while not stop_loop:
    x*x

    signal.signal(signal.SIGINT, exit_chld)

    if __name__ == ‘__main__’:
    processes = cpu_count()
    print ‘-‘ * 20
    print ‘Running load on CPU’
    print ‘Utilizing %d cores’ % processes
    print ‘-‘ * 20
    pool = Pool(processes)
    pool.map(f, range(processes))

Leave a Comment