Sobes.tech
Junior — Middle
118

Kas teil on kogemusi mitme lõimega programmeerimises Pythonis ja kuidas te rakendasite ülesannete paralleelset täitmist?

Ettevõtted, kust küsiti
СБЕРСБЕР
ООО Цитадель
СБЕР Центр ИИСБЕР Центр ИИ
RutubeRutube

Vastus AI-lt

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.