Sobes.tech
Junior — Middle
63

Каковы преимущества и недостатки использования потоков в Python для многозадачности?

Answer from AI

sobes.tech AI

Преимущества использования потоков (threads) в Python:

  • Позволяют выполнять несколько задач одновременно, что полезно для операций ввода-вывода (например, сетевые запросы, чтение файлов).
  • Упрощают структуру программы при работе с параллельными задачами.

Недостатки:

  • Из-за GIL (Global Interpreter Lock) в стандартной реализации CPython потоки не могут эффективно использовать несколько ядер процессора для вычислительно интенсивных задач — они выполняются по очереди.
  • Потоки могут привести к сложностям с синхронизацией данных и состоянием, что повышает риск ошибок (гонки, дедлоки).

Пример использования потоков для параллельного выполнения операций ввода-вывода:

import threading
import time

def task(name):
    print(f"Поток {name} начал работу")
    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()

Этот код запускает три потока, которые выполняют задачу с задержкой, демонстрируя параллельное выполнение.