Sobes.tech
Junior — Middle
69

Как эффективно реализовать параллельное выполнение задач в Python с использованием многопоточности?

Companies where asked
Леста

Answer from AI

sobes.tech AI

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

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

import threading
import time

def task(name, delay):
    print(f"Задача {name} началась")
    time.sleep(delay)
    print(f"Задача {name} завершена")

threads = []
for i in range(3):
    t = threading.Thread(target=task, args=(f'Thread-{i+1}', 2))
    threads.append(t)
    t.start()

for t in threads:
    t.join()

print("Все задачи выполнены")

Если задачи CPU-интенсивные, лучше использовать multiprocessing для параллелизма.

Для упрощения можно использовать concurrent.futures.ThreadPoolExecutor, который управляет пулом потоков:

from concurrent.futures import ThreadPoolExecutor
import time

def task(name):
    print(f"Задача {name} началась")
    time.sleep(2)
    print(f"Задача {name} завершена")

with ThreadPoolExecutor(max_workers=3) as executor:
    for i in range(3):
        executor.submit(task, f'Thread-{i+1}')

Такой подход упрощает создание и управление потоками.