Junior — Middle
68
Как эффективно реализовать параллельное выполнение задач в Python с использованием многопоточности?
Компании, где спрашивали
Леста
Ответ от нейросети
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}')
Такой подход упрощает создание и управление потоками.