Sobes.tech
Назад к вопросам
Junior — Middle
76

У вас есть опыт разработки многопоточных приложений или компонентов, использующих параллельное выполнение задач?

Компании, где спрашивали
ЯндексЯндекс
СКАИД
Диджитал сектор

Ответ от нейросети

sobes.tech AI

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

Для параллельного выполнения задач, особенно CPU-bound, лучше использовать модуль multiprocessing, который запускает несколько процессов и обходит ограничение GIL.

Для IO-bound задач можно использовать concurrent.futures.ThreadPoolExecutor для удобного управления пулом потоков, а для CPU-bound — concurrent.futures.ProcessPoolExecutor.

Пример использования ThreadPoolExecutor для параллельного выполнения функций:

from concurrent.futures import ThreadPoolExecutor
import time

def task(n):
    print(f"Задача {n} начала выполнение")
    time.sleep(1)
    print(f"Задача {n} завершена")

with ThreadPoolExecutor(max_workers=3) as executor:
    for i in range(5):
        executor.submit(task, i)

Этот код запускает до 3 потоков одновременно, выполняя функцию task параллельно.