Sobes.tech
Junior — Middle
102

Pythonда көп жиптүү иштөө тажрыйбасыңыз барбы жана тапшырмаларды параллелдүү аткарууну кантип ишке ашырдыңыз?

Кайсыл жерде компаниялар сурады
СБЕРСБЕР
ООО Цитадель
СБЕР Центр ИИСБЕР Центр ИИ
RutubeRutube

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.