Новый процесс - запуск нового итерпретатора Python. Например можно один скрипт запустить для обработки разных файлов. При этом создаются ПОТОКИ ОПЕРАЦИОННОЙ СИСТЕМЫ (на их создание уходит больше времени и ресурсов, чем на потоки Pythona), и система сама рулит переключениями между ними.
Новый поток - средство многопоточности в самом Python. В рамках одного GIL пара потоков будем что-то делать, при этом у них может быть общие ресурсы (писать в один список например, со всеми вытекающими проблемами).
Процессы хороши, когда много работы для CPU, потоки - когда много I/o операций. Соотвественно, можно запустить 2 процесса, в котором будет например по 3 потока.
https://medium.com/@bfortuner/python-multithreading-vs-multiprocessing-73072ce5600b - сравнение производительности процессов и потоков на разных типах задач.
Что процессы, что потоки полагаются на переключение контекста со стороны CPU, что приводит к локам, конкуренции и прочей белиберде, при ненадлежащем качестве кода.
Asyncio - библиотека (по сути шедулер внутри процесса Python), которая головомойку по переключению контекста и контролем за исполнением задач перекладывает на программиста. Что усложняет этап проектирования, но повышает надежность и контроллируемость кода.
Полезные ссылки:
https://hackernoon.com/asynchronous-python-45df84b82434 - вот тут хорошо написано.
https://stevedower.id.au/blog/async-api-for-python/ - теория асинхронного подхода
http://ninjaside.info/blog/ru/funkcii-map-i-zip-i-lambda-python/ - map
http://y.tsutsumi.io/aiohttp-vs-multithreaded-flask-for-high-io-applications.html - aiohttp API comparison
https://proglib.io/p/python-asyncio/ - asyncio пример
http://toly.github.io/blog/2014/02/13/parallelism-in-one-line/ - многопоточность в одну строку
https://habr.com/post/260431/ - Еще раз о многопоточности в одну строку
https://habr.com/post/149420/ - многопточность и многопроцесорность.
https://compscicenter.ru/media/slides/python_2015_autumn/2015_12_07_python_2015_autumn_3KfewPJ.pdf