@Gwiny

Имеет ли многопоточность смысл в Python?

В статьях по Python по вопросу многопоточности (пример 1 и пример 2) упоминается, что из-за ограничений GIL (Global Interpreter Lock) исполнение многопоточного приложения в лучшем случае займет такое же количество времени, как и однопоточного, а на деле - дольше. В таком случае, имеет ли многопоточность хоть какой-нибудь смысл в Python?
  • Вопрос задан
  • 749 просмотров
Решения вопроса 1
sgjurano
@sgjurano
Разработчик
Конечно имеет :)
GIL мешает только параллельному использованию процессора в пределах одного процесса. Можно использовать треды для долгих IO операций, можно процессы для операций на CPU, они GIL неподвластны :)
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
Sly_tom_cat
@Sly_tom_cat
.
Сильно зависит от реализуемой задачи.

Для задач типа пользовательского интерфейса - одного потока вполне достаточно, для убыстрения обработки потока независимых запросов с высоким временем ожидания - можно смело писать многопоточные решения и даже с учетом GIL будет большой выигрыш.
А вот для математических обсчетов больших массивов данных - тут GIL хотелось бы отключить, потому что разбиение задачи на продпроцессы иногда съедает своими накладными ресурсами все бенефиты использования много ядерных процессоров.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы