Trying to better understand multiprocessing and how it can be used for below scenario.

I have a folder of 100,000 images. I have a python script that takes each image, performs some operations on the image and stores the result into another directory. 

It takes 5 seconds for each operation on the image. 

My question is as follows - 

When my script is executing on a single image. If I look at cpu statistics using the top command , I can see that neither my cpu or my memory are at 100% ( this is a multi core processor) 

Moreover I am able to process more images per minute by simply starting many python scripts in different shells. 

What is the pythonic way to perform this task in a faster way? If the number of images increase how can I scale this horizontally? 

Any resources / comments would be helpful.