Python Разработка | Web Backend, Парсинг & Telegram Bots. Пайтон программирование с нуля. Django, FastAPI и SQL. Уроки для начинающих и IT карьера. Coding.
Образование · 21 июля 2026 г.
Модуль multiprocessing в Python: потоки против процессов — 21 июля 2026 г. в 07:03:42.752
Модуль multiprocessing в Python: потоки против процессов Модуль multiprocessing позволяет создавать не только процессы, но и потоки. Однако стоит помнить о главной особенности CPython — GIL (Global Interpreter Lock). Этот механизм блокирует выполнение байт-кода Python несколькими потоками одновременно. Это означает, что потоки полезны в основном в случаях, когда программа выполняет операции, не связанные с Python-интерпретатором, например, ожидание ввода-вывода (IO). К примеру, загрузка трёх различных статей из Википедии будет одинаково эффективной как с потоками, так и с процессами. Причём результат в три раза быстрее по сравнению с выполнением задачи в одном процессе: from multiprocessing import Pool from multiprocessing.pool import ThreadPool import requests def download_wiki_article(article): url = 'http://de.wikipedia.org/wiki/' return requests.get(url + article) process_pool = Pool(3) thread_pool = ThreadPool(3) thread_pool.map(download_wiki_article, ['a', 'b', 'c']) # ~376 ms process_pool.map(download_wiki_article, ['a', 'b', 'c']) # ~373 ms [download_wiki_article(a) for a in ['a', 'b', 'c']] # ~1.09 s Однако использование потоков для задач, нагружающих CPU, практически бессмысленно: import math from multiprocessing import Pool from multiprocessing.pool import ThreadPool def f(x): return len(str(math.factorial(x))) process_pool = Pool(4) thread_pool = ThreadPool(4) inputs = [i ** 2 for i in range(100, 130)] [f(x) for x in inputs] # ~1.48 s thread_pool.map(f, inputs) # ~1.48 s process_pool.map(f, inputs) # ~478 ms При задачах, требующих интенсивных вычислений, использование процессов вместо потоков даст значительный прирост производительности благодаря распределению нагрузки между несколькими ядрами процессора. 👉 @BookPython

