Sobes.tech
Junior — Middle
99

Haben Sie Erfahrung mit Multithreading in Python und wie haben Sie die parallele Ausführung von Aufgaben implementiert?

Unternehmen wurden gefragt
СБЕРСБЕР
ООО Цитадель
СБЕР Центр ИИСБЕР Центр ИИ
RutubeRutube

Antwort von AI

sobes.tech KI

В 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.