As a rule of thumb: Use threads if there aren’t any hard reason why you can’t. Processes have a lot more overhead. Scenarios where you need processes/Distributed:
- part of the conputation runs on different machines
- you load some library that is not thread-safe (each process loads its own copy of the lib so you can safely parallelize calls to the library using processes)