Тот же код узла с дочерним процессом python не работает в другой операционной системе и оборудовании - PullRequest
0 голосов
/ 26 июня 2019

Мы разрабатывали веб-страницу, в которой полностью использовались сервер node.js, webpack и дочерний процесс python. Запрос отправляется дочернему процессу python, и после того, как дочерний процесс python был успешно завершен, все результаты отображаются на сервере node.js.

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

Характеристики машины для развития: - ОЗУ: 12 ГБ - дисплей: GF108M [GeForce GT 540M] - Операционная система: Ubuntu 16.04.5 LTS - ЦП: 8 - Модель процессора: Intel (R) Core (TM) i7-2670QM CPU @ 2,20 ГГц - Архитектура: x86_64

Характеристики машины для развертывания: - ОЗУ: 32 ГБ - дисплей: NVIDIA Quatro M400 - Операционная система: Windows 10 Pro
- Процессор (ы): 32 - Модель процессора: Intel (R) Xeon (R) E7 v3 / Xeon (R) E5 v3 / Core i7 с буферизованным кольцевым агентом - 2FF8 - Архитектура: x86_64

Мы пытались использовать разные виртуальные машины и операционную систему, но всегда одинаковый результат. Я думаю, что нам не хватает некоторой части, чтобы позволить узлу или питону использовать GPU в дочернем процессе.

Все необходимые модули для запуска системы выглядят следующим образом: наиболее важным для системы является pyhseds, который, как я полагаю, использует numpy, растерио на заднем плане

import os
import sys
import json
from geojson import Polygon
import numpy as np
from pysheds.grid import Grid
from pyproj import Proj, transform
import tarfile

Поскольку система выполняется только в одном процессе, время расчета значительно возрастает. В машине разработки этот же процесс занимает всего полсекунды, тогда как в машине развертывания он увеличивается на 10-30 секунд. В некоторых случаях он вообще не возвращает никакого значения.

1 Ответ

0 голосов
/ 27 июня 2019

После прохождения кода мы нашли причину, вызвавшую эту проблему.Мы заметили, что версия библиотеки pyproj, более новая, чем 1.9.6, не позволяет полностью запустить код, как ожидалось.После понижения с 2.2.1 до 1.9.6 код дает результаты в десять раз быстрее.Я действительно не знаю причину или мы должны применить дальнейшую палатализацию или многопоточность при использовании библиотек pyproj в более новых версиях, но в настоящее время кажется, что мы преодолели нашу проблему производительности.

import pyproj 
...