DEV Community

Cover image for Introduction to Python's Multiprocessing Module
Md Mohaymenul Islam (Noyon)
Md Mohaymenul Islam (Noyon)

Posted on

Introduction to Python's Multiprocessing Module

Python is a popular programming language that is widely used for various tasks, ranging from web development to scientific computing. One of the strengths of Python is its ability to handle multiple tasks simultaneously, known as concurrency. Python's standard library includes several modules for handling concurrency, including the threading and multiprocessing modules.

In this blog post, we will be discussing the multiprocessing module, which provides a simple and efficient way to run multiple processes in parallel. The multiprocessing module allows us to take full advantage of multiple cores and processors, thereby increasing the performance of our applications.

What is Multiprocessing?

Multiprocessing is the ability of a computer to run multiple processes simultaneously. A process is a self-contained program that runs in its own environment, separate from other processes. Multiprocessing is useful when we have multiple tasks that can run independently of each other, as it allows us to run each task in a separate process. This can significantly improve the performance of our applications, especially when the tasks are CPU-bound.

Why Use Multiprocessing in Python?

Python's multiprocessing module provides several benefits, including:

Improved performance: By running multiple processes in parallel, we can take full advantage of multiple cores and processors, thereby increasing the performance of our applications.

Isolation of processes: Each process runs in its own environment, separate from other processes. This means that if one process crashes, it will not affect the other processes.

Easy to use: The multiprocessing module provides a simple and efficient way to run multiple processes in parallel, making it easy to add parallel processing to your applications.

How to Use Multiprocessing in Python

The multiprocessing module provides several classes and functions for handling processes, including the Process class, which is the main class for running processes. To run a process, we simply need to create a new Process object and call its start() method.

Here is a simple example that demonstrates how to use the multiprocessing module:

import multiprocessing

def worker(num):
    """A worker function that simply prints its argument."""
    print(f"Worker {num} running")

# Create a new process
process = multiprocessing.Process(target=worker, args=(1,))

# Start the process
process.start()

# Wait for the process to finish
process.join()

Enter fullscreen mode Exit fullscreen mode

In this example, we define a worker function that simply prints its argument. We then create a new Process object and pass the worker function as its target argument. Finally, we start the process by calling its start() method and wait for it to finish by calling its join() method.

A Simple Example

Here's a simple example of how you can use the multiprocessing module in Python to run multiple processes in parallel:

import multiprocessing

def worker(num):
    print(f'Worker {num} started')
    return

if __name__ == '__main__':
    jobs = []
    for i in range(5):
        process = multiprocessing.Process(target=worker, args=(i,))
        jobs.append(process)

    for j in jobs:
        j.start()

    for j in jobs:
        j.join()

    print("All jobs completed")

Enter fullscreen mode Exit fullscreen mode

In this example, we define a simple worker function that takes an argument num and prints out a message indicating which worker process has started.

In the if __name__ == '__main__' block, we create a list of multiprocessing.Process objects, one for each worker process we want to run. Each process is created with the worker function as its target and a unique argument i to distinguish between the different worker processes.

We then start each process using the start method and wait for all processes to complete using the join method. Finally, we print out a message indicating that all jobs have completed.

This is a simple example, but it demonstrates the basic idea behind using the multiprocessing module in Python. You can use this module to run multiple processes in parallel, and each process can run in its own memory space, which can help you take advantage of multiple CPU cores and improve the performance of your code.

Conclusion

In this blog post, we have discussed the multiprocessing module in Python and how it can be used to run multiple processes in parallel. The multiprocessing module provides a simple and efficient way to take advantage of multiple cores and processors, thereby increasing the performance of our applications. If you are looking to add parallel processing to your Python applications, then the multiprocessing module is a great

Top comments (1)

Collapse
 
kevinhch profile image
Kevin

this could be useful to run multiple tasks at the same time? I'm talking about tasks which will not finish until I stop the script