Sobes.tech
Back to questions
Junior — Middle
53

Можно ли контролировать смену потоков выполнения в Python?

Companies where asked
Мой ОфисМой Офис

Answer from AI

sobes.tech AI

В Python можно контролировать смену потоков выполнения с помощью модуля threading. Хотя интерпретатор CPython использует GIL (Global Interpreter Lock), который ограничивает одновременное выполнение байткода в нескольких потоках, вы можете управлять потоками, создавая, запускаючи и синхронизируя их.

Пример создания и запуска потоков:

import threading
import time

def worker(name):
    print(f"Поток {name} начал работу")
    time.sleep(2)
    print(f"Поток {name} завершил работу")

thread1 = threading.Thread(target=worker, args=("A",))
thread2 = threading.Thread(target=worker, args=("B",))

thread1.start()
thread2.start()

thread1.join()  # Ожидаем завершения thread1
thread2.join()  # Ожидаем завершения thread2

print("Все потоки завершены")

Вы можете использовать методы start(), join(), а также синхронизировать потоки с помощью блокировок (Lock), событий (Event) и других примитивов из модуля threading.

Для более низкоуровневого контроля можно использовать модуль thread (в Python 3 он называется _thread), но он менее удобен и безопасен.

Если нужна параллельная обработка без ограничений GIL, стоит рассмотреть модуль multiprocessing.