В Python в одном потоке можно выполнять несколько задач одновременно, используя асинхронное программирование (asyncio) или генераторы, которые позволяют переключаться между задачами без создания новых потоков. Однако из-за GIL (Global Interpreter Lock) в стандартной реализации CPython одновременное выполнение нескольких потоков, выполняющих Python-код, ограничено — только один поток выполняется в любой момент времени.
Можно ли выполнять несколько задач одновременно в одном потоке в Python?
В Python в одном потоке можно выполнять несколько задач одновременно, используя асинхронное программирование (asyncio) или генераторы, которые позволяют переключаться между задачами без создания новых потоков.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
В Python в одном потоке можно выполнять несколько задач одновременно, используя асинхронное программирование (asyncio) или генераторы, которые позволяют переключаться между задачами без создания новых потоков. Однако из-за GIL (Global Interpreter Lock) в стандартной реализации CPython одновременное выполнение нескольких потоков, выполняющих Python-код, ограничено — только один поток выполняется в любой момент времени.
Пример с asyncio для одновременного выполнения задач в одном потоке:
import asyncio
async def task(name, delay):
await asyncio.sleep(delay)
print(f"Задача {name} выполнена")
async def main():
await asyncio.gather(
task('A', 1),
task('B', 2),
task('C', 1.5)
)
asyncio.run(main())
Таким образом, несколько задач могут выполняться «параллельно» в одном потоке, переключаясь по времени ожидания, но не одновременно в смысле многопоточности.