Back to questions
СБЕР
СБЕР Центр ИИ
Rutube
Junior — Middle
74
Имел ли опыт работы с многопоточностью в Python и как реализовывал параллельное выполнение задач?
Companies where asked
ООО Цитадель
Answer from AI
sobes.tech AI
В Python для реализации параллельного выполнения задач часто используют модули threading и multiprocessing.
threadingподходит для задач, где важна параллельность ввода-вывода, так как из-за GIL (Global Interpreter Lock) потоки не выполняются одновременно на нескольких ядрах для CPU-интенсивных задач.multiprocessingсоздает отдельные процессы, обходя ограничение GIL, и подходит для CPU-интенсивных задач.
Пример с использованием threading для параллельного выполнения функций:
import threading
def task(name):
print(f"Задача {name} начала выполнение")
# имитация работы
import time
time.sleep(2)
print(f"Задача {name} завершена")
threads = []
for i in range(3):
t = threading.Thread(target=task, args=(i,))
threads.append(t)
t.start()
for t in threads:
t.join()
Для CPU-интенсивных задач лучше использовать multiprocessing:
from multiprocessing import Process
def task(name):
print(f"Процесс {name} начал выполнение")
# тяжелая вычислительная задача
result = sum(i*i for i in range(10**6))
print(f"Процесс {name} завершен с результатом {result}")
processes = []
for i in range(3):
p = Process(target=task, args=(i,))
processes.append(p)
p.start()
for p in processes:
p.join()
Таким образом, выбор подхода зависит от типа задачи: I/O или CPU.