@Sushkov
">alert("yohoho")

Какие потоки есть в питоне?

Скажите какие варианты потоков есть в питоне и чем они отличаются? В интернете куча статей и каждый автор показывает на что он горазд, от это каша в голове. :(
  • Вопрос задан
  • 240 просмотров
Пригласить эксперта
Ответы на вопрос 2
@nirvimel
Потоки, создаваемые при помощи threading (и его низкоуровневой базы thread) являются настоящими полноценными потоками ОС (как в C/C++ и большинстве языков). Но в каждом процессе интерпретатора существует одна глобальная блокировка GIL, разделяемая между всеми потоками. Большинство инструкций Python (доступ ко всем объектам, глобальным переменным и вызов функций и методов) требуют захвата GIL. Так как единственный GIL в каждый конкретный момент может быть захвачен только одним потоком, следовательно только один, захвативший GIL, поток может исполняться в один момент времени. Следовательно о распараллеливании вычислений на чистом Python (без ухищрений) можно забыть. Это убивает большую часть преимуществ многопоточности, но не все. Например, многие функции дискового и сетевого ввода/вывода освобождают GIL во время ожидания окончания операции (доступ к Python-объектам внутри интерпретатора в этот момент не требуется), что позволяет другим потокам захватывать GIL. Следовательно, GIL не мешает распараллеливанию ввода/вывода.
Ответ написан
sergey-gornostaev
@sergey-gornostaev Куратор тега Python
Седой и строгий
POSIX threads на родной библиотеке threading и легковесные потоки на Gevent.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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