У меня есть приложение .Net Console, которое порождает Process для выполнения скрипта Python.Вход является относительно большим входом, около 1 ГБ, который проходит некоторые этапы обработки изображения.Скрипт python обернут в блок try/except
, который просто возвращает сообщение о результате (хак, но такова жизнь).Проблема, которую я обнаружил, заключается в том, что файл не будет обрабатываться на 2 отдельных серверах, но он будет обрабатываться без ошибок на моем локальном компьютере.
Характеристики сервера: Windows Server 2012 R2 Standard, четырехъядерный процессор Intel Xeon, 32 ГБRAM - AWS EC2 Local Machine: Windows 10 Pro, четырехъядерный процессор i7, 16GB RAM - dev машина / ноутбук
Python работает в виртуальной среде с одинаковыми пакетами требований в обоих случаях, кодто же самое, но что-то убивает процесс при запуске на экземпляре сервера AWS EC2.
Я вижу всплеск ОЗУ в диспетчере задач на моей локальной машине, но когда я запускаю его на серверах, процесс pythonдостаточно недолговечен, поэтому я не могу ни найти его, ни увидеть его всплеск ОЗУ в диспетчере задач.
Я получаю сообщение об ошибке MemoryError
, поэтому я знаю, что python хотя бы запускает скрипт и вызывает ошибку.Локально, при запуске python достигает примерно 10-11 ГБ ОЗУ, поэтому я не ожидаю, что ОЗУ действительно будет ограничивающим фактором.
Существует ли какая-либо системная политика или другое защитное устройство в программном обеспечении Windows Server, которое предотвращает выделение pythonнеобходимая оперативная память?Через AppPool ничего не запускается, это простая консольная .exe-программа.Что может стать причиной такой смерти Python?
Редактировать: Я проходил построчно через скрипт Python, который у меня есть.Кажется, ошибка возникает из-за: someVar = np.zeroes([largeNumber, largeNumber2]).astype('uint8')
... Из того, что я собрал из документации numpy
, метод astype
создает копию в памяти.
Это все еще не помогает мне понятьпочему он работает локально, а не на сервере.