Робота з процесами
Свайпніть щоб показати меню
Модуль Python multiprocessing дозволяє досягати справжнього паралелізму шляхом створення окремих процесів, кожен з яких має власний інтерпретатор Python та простір пам'яті. На відміну від потоків, які спільно використовують пам'ять і виконуються в одному процесі, процеси повністю ізольовані один від одного. Така ізоляція усуває обмеження Global Interpreter Lock (GIL), дозволяючи декільком ядрам процесора працювати паралельно над задачами, що навантажують CPU. Після перегляду відео ви повинні зрозуміти, що паралелізм на основі процесів особливо корисний, коли потрібно виконувати складні обчислення або використовувати декілька ядер для задач, які інакше були б обмежені GIL. Модуль multiprocessing надає знайомий API, подібний до модуля threading, що спрощує перехід між потоками та процесами залежно від ваших потреб.
Використання цих класів і функцій для створення надійних паралельних застосунків, організації спільного доступу до даних і координації виконання процесів у Python.
123456789101112131415import multiprocessing import time def print_message(message, delay): time.sleep(delay) print(message) process1 = multiprocessing.Process(target=print_message, args=("Process 1 finished", 2)) process2 = multiprocessing.Process(target=print_message, args=("Process 2 finished", 1)) process1.start() process2.start() process1.join() process2.join()
Цей приклад коду демонструє використання модуля multiprocessing у Python для виконання завдань паралельно шляхом створення окремих процесів. У прикладі використовуються прості затримки часу та виведення повідомлень, щоб показати, як процеси можуть виконуватися незалежно та одночасно.
Основні концепції, що ілюструються
-
Створення процесу:
- Нові процеси створюються за допомогою класу
multiprocessing.Process; - Кожному процесу передається цільова функція (
print_message) та аргументи для цієї функції.
- Нові процеси створюються за допомогою класу
-
Запуск процесу:
- Метод
start()запускає кожен процес, дозволяючи їм виконуватися одночасно; - Після запуску кожен процес виконує свою цільову функцію незалежно від інших.
- Метод
-
Паралельне виконання:
- Обидва процеси «засинають» на різний час (
2та1секунди) за допомогоюtime.sleep(); - Оскільки вони працюють паралельно, процес із меншою затримкою завершується першим, навіть якщо був запущений пізніше.
- Обидва процеси «засинають» на різний час (
-
Очікування завершення процесу:
- Метод
join()гарантує, що основна програма чекатиме завершення обох процесів перед продовженням виконання; - Без
join()основна програма може завершитися до завершення процесів.
- Метод
Цей приклад показує, що з використанням багатопроцесності завдання можуть виконуватися одночасно на декількох ядрах процесора, що ідеально підходить для ресурсоємних операцій, які виграють від паралельного виконання.
Дякуємо за ваш відгук!
Запитати АІ
Запитати АІ
Запитайте про що завгодно або спробуйте одне із запропонованих запитань, щоб почати наш чат