Потоки Python идеально жизнеспособны и полезны для многих задач.Поскольку они реализованы с собственными потоками ОС, они позволяют выполнять блокирующие системные вызовы и продолжают «работать» одновременно - вызывая системный вызов блокировки в отдельном потоке.Это очень полезно для программ, которые должны выполнять несколько задач одновременно (например, GUI и другие циклы событий) и даже могут повысить производительность для задач, связанных с вводом-выводом (таких как очистка веб-страниц).
Однако из-зак глобальной блокировке интерпретатора, которая исключает интерпретатор Python на самом деле , выполняющий более одного потока одновременно, если вы планируете распределить код с интенсивным использованием ЦП по нескольким ядрам ЦП с потоками и улучшитьпроизводительность таким образом, вам не повезло.Однако это можно сделать с помощью модуля multiprocessing
, который обеспечивает интерфейс, аналогичный threading
, и распределяет работу, используя процессы , а не потоки .
IТакже следует добавить, что расширения C не обязательно должны быть связаны с GIL, и многие выпускают его, поэтому расширения C могут использовать несколько ядер с помощью потоков.
Итак, все зависит отчто именно вам нужно сделать.