Выполнение запросов в Python с использованием многопроцессорности

проекты Python Изучение

Прежде чем погрузиться в выполнение запросов с использованием многопроцессорности, давайте разберемся, что такое многопроцессорность в Python. Многопроцессорность позволяет компьютеру использовать несколько ядер ЦП для параллельного выполнения задач/процессов. Такое распараллеливание приводит к значительному ускорению в задачах, требующих большого объема вычислений. Некоторым из вас может быть интересно, почему бы нам не использовать эту функцию в наших интересах.

Psycopg2 — самый популярный адаптер PostgreSQL, используемый в Python. Он работает по принципу полной реализации Python DB API 2.0 вместе с безопасностью потоков (одно и то же соединение используется несколькими потоками).

Выполнение запросов на Python с использованием многопроцессорной обработки включает два важных шага

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

Используемая база данных:

становка соединения с базой данных с 

Установка соединения с базой данных с помощью Python

Python3

import psycopg2
 
def run():
   
    try:
        # establishing the connection
        conn = psycopg2.connect(database="root", user='root',
                                password='root', host='127.0.0.1'
                                port='5432')
         
        # Creating a cursor object using the
        # cursor() method
        cursor = conn.cursor()
         
        # Executing an query using the execute() method
        cursor.execute('''SELECT * FROM root''')
        print("Connection established to the database root")
         
        # Closing the connection
        conn.close()
    except:
        print("Connection not established to the database")
 
# calling the function
run()

Выход:

Установлено соединение с корнем базы данных

Выполнение запросов с использованием многопроцессорности в Python

Python3

from multiprocessing.connection import Connection
import time,os
from multiprocessing import Pool, freeze_support
import psycopg2
 
def run():
   
    try:
        conn = psycopg2.connect(database="root", user='root',
                                password='root', host='127.0.0.1'
                                port='5432')
        cursor = conn.cursor()
        cursor.execute('''SELECT * FROM root''')
        records = cursor.fetchall()
        return records
    except:
        print("Connection not established to the database")
        return -1
 
if __name__=="__main__":
   
    freeze_support()
    print("Enter the number of times to run the above query")
    n=int(input())
    results = []
     
    with Pool(processes=os.cpu_count() - 1) as pool:
       
        for _ in range(n):
            res=pool.apply_async(run)
            results.append(res)
            res = [result.get() for result in results]
             
    print(res)
    pool.close()
    pool.join()

Выход:

использованием многопроцессорности в Python

Выполнение запросов с использованием многопроцессорности в Python

Заключение

Иногда вы можете ускорить работу, распараллелив их. Несложно попрактиковаться в разбиении задачи на мелкие части, чтобы ее можно было решить гораздо быстрее. Точно так же эти небольшие единицы распределяются между разными рабочими (процессорами) для их решения. Это варьируется от ноутбука к ПК, потому что это зависит от количества ядер, в основном ноутбуки имеют не менее 4, а многие имеют 8, тогда как ПК имеют целых 32. Здесь возникает проблема. Python по умолчанию является однопоточным, он запускает одно ядро ​​​​за раз. но с помощью многопроцессорного пакета мы можем запустить столько ядер, сколько захотим.

Читайте также:  Основные термины информационных технологий
Оцените статью
bestprogrammer.ru
Добавить комментарий