При каких операциях Python всегда отпускает GIL

Python Middle Без компании
При каких операциях Python всегда отпускает GIL
Ответы
GIL (Global Interpreter Lock) в Python отпускается в следующих случаях: - **I/O операции** – чтение/запись файлов, сетевые запросы (socket, HTTP и т.д.). - **Системные вызовы** – например, `time.sleep()`. - **Вызовы C-расширений** – если расширение явно отпускает GIL (например, NumPy, Cython с `nogil`). - **Операции, выполняемые в другом потоке** – например, в `threading.Thread`. Пример с `time.sleep()`: ``` import time import threading def worker(): print("GIL отпущен на время sleep") time.sleep(1) # GIL отпущен print("GIL снова захвачен") t = threading.Thread(target=worker) t.start() t.join() ``` GIL не отпускается при чисто вычислительных операциях (например, циклы на чистом Python), поэтому для CPU-задач лучше использовать `multiprocessing`.