Можно ли контролировать смену потоков выполнения в Python?
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.