Phase 12 of 25 · Topic 12.4

Inter-Process Communication with multiprocessing.Queue

1Concept

Because processes do not share memory, communication requires Inter-Process Communication (IPC). `multiprocessing.Queue` serializes objects using `pickle` through an underlying OS pipe, providing thread-safe and process-safe message passing.

2Architecture Diagram

[ Worker Process 1 ] ---> Put (Pickles object into OS Pipe) ---> [ Main Process reads from Queue ]

3Code Example

Python 3.12
import multiprocessing

def worker_task(queue: multiprocessing.Queue, task_id: int):
    queue.put(f"Result from worker {task_id}")

queue = multiprocessing.Queue()
worker_task(queue, 1)
worker_task(queue, 2)

print(f"Received from IPC Queue: {queue.get()}")
print(f"Received from IPC Queue: {queue.get()}")

4Expected Output

Received from IPC Queue: Result from worker 1
Received from IPC Queue: Result from worker 2

5Key Takeaways

  • Objects put into multiprocessing.Queue MUST be picklable.
  • Use `multiprocessing.JoinableQueue` to coordinate task completion with `.task_done()`.
  • Avoid placing huge data arrays in queues; use shared memory (`multiprocessing.shared_memory`) instead.