0 votes
1 view
in Python by (47.8k points)

I am trying to understand the advantages of multiprocessing over threading. I know that multiprocessing gets around the Global Interpreter Lock, but what other advantages are there, and can threading not do the same thing?

1 Answer

0 votes
by (107k points)

Multiprocessing:-

The multiprocessing module uses a process that runs on separate memory space. Due to this, it is harder to share objects between process and multiprocessing.

Pros:-

  • Its code is usually straightforward.

  • It takes advantage of multiple CPUs & cores

  • Avoids GIL limitations for CPython

  • Here we can interrupt/kill the Child processes.

  • Python multiprocessing module has very useful abstractions with an interface much like threading.

Cons:-

  • IPC a little more complicated with more overhead (communication model vs. shared memory/objects)

  • Larger memory footprint(it uses more amount of main memory space).

Threading:-

  • The threading module uses thread (A thread is an entity within a process that can be scheduled for execution. Also, it is the smallest unit of processing that can be performed in an Operating System).

  • Since threads use the same memory space(amount of memory assigned to any program by CPU), precautions have to be there because both the threads will write to the same memory at the same time. For this, we have the global interpreter lock.

Pros:-

  • It is lightweight - low memory footprint(it uses less amount of main memory).

  • As it has shared memory that makes access to one state from others is easy.

  • It also allows you to easily make responsive UIs.

Cons:-

  • CPython - subject to the GIL.

  • It is not interruptible/killable.

Related questions

0 votes
1 answer
0 votes
1 answer
0 votes
2 answers
0 votes
1 answer
Welcome to Intellipaat Community. Get your technical queries answered by top developers !


Categories

...