Рубрики
Без рубрики

Быстрое введение в Python Multiprocessing Pools. Ускорение вашего рабочего процесса

Сколько раз в Python использовали петлю и наблюдал, как ваш терминал проходит через каждый предмет, занимая часами подряд? Tagged с Python, Python3, многопроцестрой, рабочий процесс.

Сколько раз в Python использовали петлю и наблюдал, как ваш терминал проходит через каждый предмет, занимая часами подряд?

Эта статья проходит через Многоподобная модуль для Python. Люди взволнованы, что Python использует потоки. Я знаю, что приехал из PHP Land. Кстати, резьба отличается от многопрофильной.

Модуль потока использует потоки, многопроцессный модуль использует процессы. Разница в том, что потоки работают в одном и том же пространстве памяти, в то время как процессы имеют отдельную память. Это заставляет немного сложнее делиться объектами между процессами с многопроцессоровкой. Поскольку потоки используют одну и ту же память, необходимо принимать меры предосторожности, или два потока будут писать в одну и ту же память одновременно.

Многопроцессорный модуль в стандартной библиотеке Python имеет много мощных функций. – Официальная документация

Основная петля без многопрофильной

def f(x):
    # Run Code
    print(x*x)
for item in [1, 2, 3, 4]:
    f(item)

Бежать

time python3 main.py
>> 1
>> 4
>> 9
>> 16
>> python3 main.py  0.04s user 0.01s system 89% cpu 0.059 total

0,059S – это ничто. Допустим, функция f () выполняет какой -то код, который занимает 2 секунды (обновление базы данных, изменение размера изображений, использование веб -сайта и т. Д.).

Основная петля с задержкой 2S

import time
def f(x):
    time.sleep(2) # Wait 2 seconds
    print(x*x)
for item in [1, 2, 3, 4]:
    f(item)

Бежать

time python3 main.py
>> 1
>> 4
>> 9
>> 16
>> python3 main.py  0.04s user 0.01s system 89% cpu 8.067 total

8.067S добавляет более 200 предметов. Это, когда многопроцессорная передача может стать вашим другом. Представьте себе, что вы запускаете несколько предметов одновременно за тот же двухсекундный период. Параллельная обработка в настоящее время привлекает больше внимания. Поскольку производители процессоров начинают добавлять все больше и больше сердечников в свои процессоры, создание параллельного кода – отличный способ повышения производительности. Python представил многопроцессный модуль, чтобы позволить нам написать параллельный код.

В модуле Python многопроцессорного модуля есть множество классов для построения параллельной программы. Среди них три основных класса – это процесс, очередь и блокировка. Эти занятия помогут вам построить параллельную программу. Это введение в бассейн.

Объект пула процессов, который контролирует пул рабочих процессов, на которые могут быть представлены задания. Он поддерживает асинхронные результаты с таймаутами и обратными вызовами и имеет параллельную реализацию карты.

Основная петля с задержкой 2S с использованием многопроцессы

import time 
from multiprocessing import Pool
def f(x):
    time.sleep(2) # Wait 2 seconds
    print(x*x)
p = Pool(8)
p.map(f, [1, 2, 3, 4])
p.close()
p.join()

Бежать

time python3 main.py
>> 1
>> 4
>> 9
>> 16
>> python3 main.py  0.08s user 0.06s system 6% cpu 2.180 total

2.180S против 8.067S означает, что каждый предмет в одном и том же массиве занял 2 секунды. Впечатляюще. Это действительно приятно, когда вы делаете это на Linux Box. Ваш код может лучше использовать доступные вам ресурсы. Итак, это многопроцессорные бассейны в Python. Спасибо за чтение.

Пример кода – https://github.com/terrillo/learn-python

Оригинал: “https://dev.to/terrillo/a-quick-introduction-to-python-multiprocessing-pools-speeding-up-your-workflow-17op”