← Home

python threads and process vs asyncio

By Брендель В. М.

Новый процесс - запуск нового итерпретатора 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