Вопрос проверяет понимание многопоточности, её преимуществ и ограничений, а также умение выбирать подходящий инструмент для параллельных задач.
Multithreading — это техника, при которой один процесс выполняет несколько потоков одновременно. Она полезна для ускорения программ, которые тратят много времени на ожидание внешних ресурсов, таких как чтение файлов, сетевые запросы или работа с базами данных. В таких случаях потоки позволяют не блокировать выполнение других задач.
import threading
import time
def fetch_data(url):
print(f"Fetching {url}")
time.sleep(2) # имитация задержки
print(f"Done {url}")
urls = ["url1", "url2", "url3"]
threads = []
for url in urls:
t = threading.Thread(target=fetch_data, args=(url,))
threads.append(t)
t.start()
for t in threads:
t.join()
print("All done")В Python из-за Global Interpreter Lock (GIL) только один поток может выполнять байт-код в любой момент времени. Поэтому для CPU-bound задач (например, вычисления) multithreading не даст прироста производительности — лучше использовать multiprocessing. В других языках, таких как Java или C++, GIL отсутствует, и multithreading эффективен для любых задач.
Multithreading стоит применять для I/O-bound операций, где важна отзывчивость и параллельное ожидание. Для CPU-bound задач в Python выбирайте multiprocessing, а в языках без GIL — смело используйте потоки.