Sobes.tech
Junior — Middle
134

Wat zijn de verschillen tussen de mechanismen van coöperatief en preemptief multitasken in Python en hoe worden ze geïmplementeerd?

Bedrijven waar gevraagd werd
AstonAston

Antwoord van AI

sobes.tech AI

В Python существуют два основных механизма многозадачности:

  1. Вытесняющая многозадачность (preemptive multitasking) — когда операционная система сама переключает контекст между потоками или процессами без участия самого кода. В Python это реализовано через модули threading и multiprocessing. Однако из-за GIL (Global Interpreter Lock) потоки не выполняются параллельно на нескольких ядрах, а процессы — да.

  2. Кооперативная многозадачность (cooperative multitasking) — когда переключение контекста происходит явно в коде, например, через asyncio и await. Здесь задачи сами уступают управление, что позволяет эффективно работать с большим числом операций ввода-вывода.

Пример кооперативной многозадачности с asyncio:

import asyncio

async def task(name, delay):
    print(f"Задача {name} стартует")
    await asyncio.sleep(delay)
    print(f"Задача {name} завершена")

async def main():
    await asyncio.gather(task('A', 1), task('B', 2))

asyncio.run(main())

Таким образом, вытесняющая многозадачность управляется ОС, а кооперативная — самим приложением через явные точки переключения.