Disks are slow, very slow, and memory is getting cheaper. That's why a lot of data analysis stuff moves to in-memory solutions. Building those kinds of apps on top of shared memory BLOBs is incredibly unproductive because you cannot share pointers. You're right that these apps may be a minority today. But it's a fast growing minority.
And yes multi-threading errors can be difficult to debug, but all the approaches to avoid these errors can be used with threads just as well as with multiple processes. Message passing, features like those in Clojure or other functional languages, or Go's goroutines.
And to be honest, the fact that most people use threads when they don't actually need them or design their programs badly is a non issue for me. Most people are incredibly bad at most things I'm afraid. Does that mean Python should not empower people who know what they are doing?
And yes multi-threading errors can be difficult to debug, but all the approaches to avoid these errors can be used with threads just as well as with multiple processes. Message passing, features like those in Clojure or other functional languages, or Go's goroutines.
And to be honest, the fact that most people use threads when they don't actually need them or design their programs badly is a non issue for me. Most people are incredibly bad at most things I'm afraid. Does that mean Python should not empower people who know what they are doing?