Нет, потоки в Python (threading) не являются нативными в полной мере. Они реализованы поверх нативных потоков операционной системы, но из-за Global Interpreter Lock (GIL) только один поток может выполнять байткод Python в данный момент времени.
GIL — это мьютекс, который защищает доступ к объектам Python, предотвращая одновременное выполнение нескольких нативных потоков Python-кода. Это упрощает управление памятью, но ограничивает истинный параллелизм на многоядерных процессорах для CPU-bound задач.
Однако для I/O-bound задач (работа с сетью, файлами и т. д.) потоки могут быть полезны, так как во время ожидания I/O GIL освобождается, позволяя другому потоку выполняться.
Для достижения истинного параллелизма для CPU-bound задач в Python используют multiproccessing (процессы), которые запускаются в отдельных интерпретаторах Python и не разделяют GIL.