Встречается на собеседованиях • сегодня

Какие подходы к конкурентности в Python

В Python есть несколько подходов для работы с конкурентностью:

  1. Потоки (threading)
    Подходит для I/O-bound задач (сетевые запросы, чтение файлов).
    Из-за GIL (Global Interpreter Lock) потоки выполняются по очереди, но при I/O GIL отпускается.

    python
    import threading
    
    def task():
        print("Thread running")
    
    thread = threading.Thread(target=task)
    thread.start()
  1. Процессы (multiprocessing)
    Для CPU-bound задач (вычисления). Каждый процесс имеет свой GIL.

    python
    from multiprocessing import Process
    
    def task():
        print("Process running")
    
    process = Process(target=task)
    process.start()
  2. Асинхронность (asyncio)
    Оптимально для I/O-bound задач с большим количеством соединений.

    python
    import asyncio
    
    async def task():
        print("Coroutine running")
    
    asyncio.run(task())
  3. ThreadPool/ProcessPool (concurrent.futures)
    Упрощает работу с пулами потоков/процессов.

    python
    from concurrent.futures import ThreadPoolExecutor
    
    with ThreadPoolExecutor() as executor:
        executor.submit(lambda: print("Task in pool"))

Выбор зависит от типа задачи:

  • I/O-bound → threading или asyncio
  • CPU-bound → multiprocessing
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы