Комментарии 14
Ну для asyncio исход немного предсказуем - оно всё-таки для параллельного выполнения операций ввода-вывода, а не для параллелизации вычислений.
Ayncio и Threadind реализуют конкурентность. Они не паралелят задачи, а просто дают разные механизмы планирования: сопрограммы и переключение между потоками, но все это в одном пространстве памяти, соответственно они никак не могут дать какой-то прирост в счетных задачах.
Мультипроцессинг не обходит gil. Он запускает новые независимые процессы. Каждый из которых грузит все импорты, а для коммуникации между ними приходится использовать каналы и очереди. Соответственно он дает прирост за счет того что это N отдельных процессов, потребляющих в N раз больше ресурсов.
Есть еще один способ, субинтерпретаторы, но он до 3.13 остается экспериментальным
По осям графиков попугаи в секунду?
Да, непонятно, что же по осям. Нужно подписать оси. И сделать заголовки у графиков. И пояснить, больше - это лучше или больше - это хуже.
А какие названия у осей в графиках? За что отвечает каждая ось?
Threading вполне себе нормально использовать для блокирующих операций, вроде работы с файлами.
2 из 3 библиотеки для работы на 1 ядре процессора, и автор проверяет их на CPU-bound задаче... мда
Так еще и орфографические ошибки тут и там в тексте. Куда смотрят редакторы, когда такое пускают в свет?! Хабр скатился
Предлагаю вам указать на ошибки, что бы я их исправил. А так же написать свою статью или хотя бы описать здесь, простым языком что и как нужно использовать правильно по вашему мнению
А вообще если я правильно понял, какие тут производятся вычисления, тут бы Numpy
при правильном применении побил бы всех остальных с разгромным счётом.
Немного замечаний к оформлению и содержанию:
Сперва пишут краткое содержание, метод исследования, детали исследования и результаты.
Легенду (mp_2, async_6 и т.д.) , нужно давать сразу или до как появляется первый график, а еще лучше этот текст в самом графике. Картинка должна быть читаема без объяснения.
По содержанию я бы добавил пример кода вызова для каждого из случаев.
Еще я бы привел такую же статистику с использованием I/O операций, так как это главная причина работы с threading в python, ну и numpy так как библиотека работает иначе.
Проверка GIL в python