Как использовать Multi-Processing в Python?
Table Of Content
Multi-Processing означает выполнение нескольких процессов одновременно. Если у нас есть задача, в которой мы хотим ускорить процесс и использовать все ядра нашей системы, мы можем использовать встроенный пакет multiprocessing в Python. Вот пример кода, который показывает, как это можно сделать.
import requests
import uuid
import shutil
from multiprocessing import Process
def run_main():
"""Этот метод запускает основной метод"""
images = ['https://i.picsum.photos/id/237/200/300.jpg?hmac=TmmQSbShHz9CdQm0NkEjx1Dyh_Y984R9LpNrpvH2D_U',
'https://i.picsum.photos/id/866/200/300.jpg?hmac=rcadCENKh4rD6MAp6V_ma-AyWv641M4iiOpe1RyFHeI',
'https://i.picsum.photos/id/1041/200/300.jpg?grayscale&hmac=_p5B0MOtog0liIBvMDpM_3qmbzEyfpWw6hJHro2D-fM']
processes_new = []
# Создание нескольких процессов для каждого запроса
for img in images:
process = Process(target=save_image, args=(img,))
processes_new.append(process)
process.start()
# Ожидание завершения всех процессов
for z in processes_new:
z.join()
def save_image(url):
"""Этот метод сохраняет изображения на локальной машине"""
image_id = uuid.uuid4().hex
req = requests.get(url, stream=True)
with open(f'{image_id}.png', 'wb') as out_file:
shutil.copyfileobj(req.raw, out_file)
if __name__ == '__main__':
run_main()
В приведенном выше примере кода происходит итерация по списку изображений и создание процесса для каждого запроса изображения. Мы можем управлять количеством процессов в зависимости от конфигурации вашей системы, так как запуск большого количества процессов (более 20-30) может привести к зависанию вашей машины, если у нее недостаточно ресурсов.
Вот и все! Спасибо за чтение моего блога.
Если вам нужна наша услуга по парсингу, перейдите по следующей ссылке: http://crawlmagic.com/