Проблемы памяти сборки Gradle с Chaquopy - PullRequest
1 голос
/ 29 марта 2020

У меня есть приложение камеры Android и отдельный конвейер обработки изображений Python, который я хотел бы интегрировать с приложением с помощью Chaquopy. Однако сам код python большой и зависит примерно от 50 модулей, таких как tenorflow, opencv, scikit-image, numpy и scipy среди других. Я могу запустить игрушечную функцию python на входящих кадрах из приложения камеры. Однако я не могу даже построить полный конвейер, потому что Gradle завершает работу со следующей ошибкой:

Задача: приложение: generateDebugPythonRequirementsAssets

Задача: приложение: generateDebugPythonBuildAssets FAILED

Недостаточно памяти: Java пространство кучи. Пожалуйста, выделите больше памяти для Gradle в файле проекта gradle.properties. Например, следующая строка в файле gradle.properties устанавливает максимальный размер кучи Java равным 1024 МБ:

Сбой либо в «Application: generateDebugPythonRequirementsAssets», либо в «Application: generateDebugPythonBuildAssets». ", в зависимости от того, сколько модулей содержится в requirememnts.txt

Я пытался увеличить пространство кучи, как было предложено, до 128 ГБ, но это не помогло.

Как можно уменьшить требования к памяти, чтобы поместиться в какое-то разумное пространство?

РЕДАКТИРОВАТЬ

вот блок пипсов из build.gradle

pip {

install "-r", "needs.txt"

}

Файл needs.txt имеет следующий файл:

absl-py == 0.9.0

ansicolors == 1.1.8

astor == 0.8.1

cachetools == 4.0.0

certifi == 2019.11.28

chardet == 3.0.4

cycler == 0.10.0

decorator == 4.4.2

gast == 0.2.2

google-auth == 1.11.3

google-auth-oauthlib == 0.4.1

google-pasta == 0.2.0

grpcio

h5py == 2.10.0

idna == 2.9

imageio == 2.8.0

Keras-Applications == 1.0.8

Keras-Preprocessing == 1.1.0

kiwisolver == 1.1.0

Уценка == 3.2.1

matplotlib

networkx == 2.4

нос == 1.3.7 numpy

oauthlib == 3.1.0 opencv-contrib-python == 4.1.2.30

opt-einsum == 3.2.0

Подушка == 7.0.0

protobuf == 3.11.3

pyasn1 == 0.4.8

pyasn1-modules == 0.2.8

pyparsing == 2.4.6

python -dateutil == 2.8.1

PyWavelets == 1.1.1

запросов == 2.23.0

запросов-oauthlib == 1,3 .0

rsa == 4.0

scikit-image == 0.16.2

scipy == 1.4.1

шесть == 1.14.0

тензорная доска == 2.1.1

tenorflow == 2.1.0

termcolor == 1.1.0

urllib3 == 1.25.8

Werkzeug == 1.0.0

упакован == 1.12.1

РЕДАКТИРОВАТЬ

Вот полная трассировка стека

FAILURE: сборка завершилась с исключением.

  • Что пошло не так: выполнение задачи не выполнено ': Приложение: generateDebugPythonBuildAssets'.

    Java пространство кучи

  • Попробуйте : Запустите с параметром --info или --debug, чтобы получить больше вывода журнала. Запустите с параметром --scan, чтобы получить полную информацию.

  • Исключение составляет:

org.gradle.api.tasks.TaskExecutionException: выполнение не выполнено для задача ': Приложение: generateDebugPythonBuildAssets'. в org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter $ 3.accept (ExecuteActionsTaskExecuter. java: 151) в org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter $ 3.acTec 11 *. 148) в org.gradle.internal.Try $ Failure.ifSuccessfulOrElse (Try. java: 191) в org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute (ExecuteActionsTaskExecuter. java: 14) .gradle.api.internal.tasks.execution.ResolveBeforeExecutionStateTaskExecuter.execute (ResolveBeforeExecutionStateTaskExecuter. java: 75) в org.gradle.api.internal.tasks.execution.ValidatingTaskExecuter.execute (ValidatingTaskExecuter. java: 62) в org.gradle.api.internal.tasks.execution.SkipEmptySourceFilesTaskExSourceFilesTaskExecuter. java: 108) в org.gradle.api.internal.tasks.execution.ResolveBeforeExecutionOutputsTaskExecuter.execute (ResolveBeforeExecutionOutputsTaskExecuter. java: 67) в org.gradle.api.inTexException java: 46) в org.gradle.api.internal.tasks.execution.CleanupStaleOutputsExecuter.execute (CleanupStaleOutputsExecuter. java: 94) в org.gradle.api.internal.tasks.execution.FinalizePropertiesTecteter. java: 46) в org.gradle.api.internal.tasks.execution.ResolveTaskExecutionModeExecuter.execute (ResolveTaskExecutionModeExecuter. java: 95) в org.gradle.api.internal.tecuks.execution.Ster (SkipTaskWithNoActionsExecuter. java: 57) в org.gradle.api.internal.tasks.execution.SkipOnlyIfTaskExecuter.execute (SkipOnlyIfTaskExecuter. java: 56) в org.gradle.apasExExter.ecute (CatchExceptionTaskExecuter. java: 36) в org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter $ 1.executeTask (EventFiringTaskExecuter. java: 73) в org.gradle.api.internal.tasventExecuter 1tasventExecution $ .call (EventFiringTaskExecuter. java: 52) в org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter $ 1.call (EventFiringTaskExecuter. java: 49) в org.gradle.internal.operations.DefaultBuildOru execute (DefaultBuildOperationExecutor. java: 416) по адресу org.gradle.internal.operations.DefaultBuildOperationExecutor $ CallableBuildOperationWorker.execute (DefaultBuildOperationExecutor. java: 406) по адресу org.gradle.internal.operations.exec.OuOUBecutor 1180 *: 165 ) в org.gradle.internal.operations.DefaultBuildOperationExecutor.execute (DefaultBuildOperationExecutor. java: 250) в org.gradle.internal.operations.DefaultBuildOperationExecutor.execute (DefaultBuildOperationExecutor. java: 158) или operations.DefaultBuildOperationExecutor.call (DefaultBuildOperationExecutor. java: 102) в org.gradle.internal.operations.DelegatingBuildOperationExecutor.call (DelegatingBuildOperationExecutor. java: 36) в org.gradle.api.internalTash.vent.vent. выполнить (EventFiringTaskExecuter. java: 49) в org.gradle.execution.plan.LocalTaskNodeExecutor.execute (LocalTaskNodeExecutor. java: 43) в org.gradle.execution.taskgraph.DefaultTaskExecutionGraph $ InvokeNode. *: 355) в org.gradle.execution.taskgraph.DefaultTaskExecutionGraph $ InvokeNodeExecutorsAction.execute (DefaultTaskExecutionGraph. java: 343) в org.gradle.execution.taskgraph.DefaultTaskExecutionGraph $ BuildOperationAaction reExecutionAction.execute (DefaultTaskExecutionGraph. java: 336) в org.gradle.execution.taskgraph.DefaultTaskExecutionGraph $ BuildOperationAwareExecutionAction.execute (DefaultTaskExecutionGraph. java: 322) в org.ecork.ge $. (DefaultPlanExecutor. java: 134) в org.gradle.execution.plan.DefaultPlanExecutor $ ExecutorWorker $ 1.execute (DefaultPlanExecutor. java: 129) в org.gradle.execution.plan.DefaultPlanExecutor $ ExecutorWorker.execute (DefaultP. java: 202) в org.gradle.execution.plan.DefaultPlanExecutor $ ExecutorWorker.executeNextNode (DefaultPlanExecutor. java: 193) в org.gradle.execution.plan.DefaultPlanExecutor $ ExecutorWorker.run (DefaultPlanEx95: DefaultPlanEx95: 129) в org.gradle.internal.concurrent.ExecutorPolicy $ CatchAndRecordFailures.onExecute (ExecutorPolicy. java: 63) в org.gradle.internal. concurrent.ManagedExecutorImpl $ 1.run (ManagedExecutorImpl. java: 46) в org.gradle.internal.concurrent.ThreadFactoryImpl $ ManagedThreadRunnable.run (ThreadFactoryImpl. java: 55). 1200 * пространство кучи в com.chaquo. python .PythonPlugin.hashAssets (PythonPlugin. groovy: 761) в com.chaquo. python .PythonPlugin $ hashAssets $ 15.callCurrent (неизвестный источник) в com.chaquo. python .PythonPlugin.hashAssets (PythonPlugin. groovy: 749) в com.chaquo. python .PythonPlugin $ _createAssetsTasks_closure24 $ _closure61.doCall (PythonPlugin. groovy: 679)

1 Ответ

1 голос
/ 30 марта 2020

Решил это, добавив следующее в файл gradle.properties

org.gradle.jvmargs = -Xmx16G

org.gradle.workers.max = 1

...