Sobes.tech
Back to questions
Junior — Middle
60

Поделитесь своим опытом работы с многопоточностью и параллельным выполнением задач

Answer from AI

sobes.tech AI

В Python для многопоточности обычно использую модуль threading, когда задачи связаны с вводом-выводом, например, сетевые запросы или чтение файлов. Для вычислительно интенсивных задач применяю модуль multiprocessing, чтобы обойти ограничение GIL и распараллелить работу на несколько процессов.

Пример с использованием 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()

Также использовал concurrent.futures для удобного управления пулом потоков или процессов, что упрощает написание параллельного кода и обработку результатов.