Sobes.tech
Junior — Middle
101

Оё таҷрибаи кор бо бисёрсоҳавӣ дар 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.