Sobes.tech
Junior — Middle
104

Python'da ko'p ipli ishlash tajribangiz bormi va vazifalarni parallel bajarishni qanday amalga oshirdingiz?

Qaerda so'ralgan kompaniyalar
СБЕРСБЕР
ООО Цитадель
СБЕР Центр ИИСБЕР Центр ИИ
RutubeRutube

AIdan javob

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.