How would you decide between threads, processes, and asyncio for a CPU-heavy Django job?
PICTURE THIS: ASYNC / PROMISE
Call fetchPromise pending
NetworkWait off stack
Then / awaitUse the JSON
Simple meaning
Do not run CPU-heavy work on the request thread at all
WHY — GIL instead of guessing?
Why interviewers care about GIL:
This is a process
question about GIL.
Panels listen for order,
trade-offs, and what you would actually do on a Python project - not buzzwords.
Stay structured
Name the idea, why it exists, then one short example.
Close cleanly
End with when you use it and one common pitfall.
STEPS — What happens step by step?
Before you speak the answer, walk the interviewer through these steps:
- 1Do not run CPU-heavy
work on the request thread at all
- 2Why it exists
push it to Celery.
- 3Inside the worker, multiprocessing
or a native library beats threads because of the GIL.
- 4asyncio does not help
CPU-bound Python
- 5Common mistake
it only overlaps waits.
- 6Close
When you pick this over the alternative.
EXAMPLE — See it in action
Here's a short line you can speak, broken into clear beats:
Say this line
“Inside the worker, multiprocessing or a native library beats threads because of ”
Break into beats
Insidetheworkermultiprocessingora
Speaking order
2987408337471632900
Note: Adapt this scaffold to your own project — keep it under 60–90 seconds.
Key takeaway
Do not run CPU-heavy work on the request thread at all push it to Celery.