I understand that multithreading is optimal for i/o bound problems and multiprocessing is optimal for cpu bound problems. I also understand that multiprocessing proceeded multithreading and I want to understand the motivation for why multithreading is necessary.
My current perspective
You can apply multiple processors to an i/o bound problem, but this would be inefficient, since more processing power is not the bottleneck. However, by running the processes in parallel, you will benefit from the i/o operations running in parallel and the program will have performance gains. The motivation for multithreading is to make more efficient use of the processor since the utilization is low and infrequent in i/o bound problems. Multithreading therefore accomplishes the same objective as multiprocessing but is more efficient, since it removes the need to utilize multiple cores.
Please correct any misunderstandings you can see and thank you so much.
1