Распределите предварительно скомпилированный модуль расширения Python с distutils

Вы можете увеличить размер кучи, передав параметры JVM -Xms и -Xmx, как показано ниже:

Для файлов Jar:

java -jar -Xms4096M -Xmx6144M jarFilePath.jar

Для файлов Java:

 java -Xms4096M -Xmx6144M ClassName

Вышеуказанные параметры увеличивают значение InitialHeapSize (-Xms) до 4 ГБ (4096 МБ) и MaxHeapSize (-Xmx) до 6 ГБ (6144 МБ).

Но размер кучи молодого поколения останется таким же, и дополнительный кусок HeapSize будет добавлен в размер кучи старого поколения. Чтобы уравнять размер кучи Young Gen и кучи старого поколения, используйте -XX: NewRatio = 1 -XX: -UseAdaptiveSizePolicy params.

java -jar -Xms4096M -Xmx6144M -XX:NewRatio=1 -XX:-UseAdaptiveSizePolicy pathToJarFile.jar

-XX: NewRatio = размер старого кучи: Young Gen HeapSize (Вы можете играть с этим коэффициентом, чтобы получить желаемое соотношение).

16
задан Toji 15 March 2010 в 02:14
поделиться

2 ответа

7
ответ дан 30 November 2019 в 22:55
поделиться

Я столкнулся с этой той же проблемой при создании дополнительной библиотеки с помощью Python 3.7, CMake 3.15.3 и Большой глоток 4.0.1 с Visual Studio 2017. Система сборки генерирует три файла: mymodule.py, _mymodule.lib и _mymodule.pyd. После набора метода проб и ошибок я нашел, что следующая комбинация работала:

  1. Создают 'setup.cfg' файл, который определяет, что Вы устанавливаете пакет; например:
    [metadata]
    name = mymodule
    version = 1.0

    [options]
    include_package_data = True
    package_dir=
        =src
    packages=mymodule
    python_requires '>=3.7'

    [options.package_data]
    * = *.pyd
  1. Изменение CMake для создания структуры каталогов распределения следующим образом:
    setup.py
    setup.cfg
    src/
        mymodule/
                 __init__.py
                 _mymodule.pyd
  1. 'setup.py' файл тогда тривиален:
    setup()

Это требует наличия, CMake переименовывают 'mymodule.py' выходной файл к' init.py'. Я сделал это с командой 'установки' в CMake:


    install (TARGETS ${SWIG_MODULE_${PROJECT_NAME}_REAL_NAME} DESTINATION "${CMAKE_BINARY_DIR}/dist/src/${PROJECT_NAME}")
    install (FILES 
            setup.py
            setup.cfg
            DESTINATION "${CMAKE_BINARY_DIR}/dist"
    )

    install (FILES
            ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}.py
            DESTINATION "${CMAKE_BINARY_DIR}/dist/src/${PROJECT_NAME}"
            RENAME "__init__.py"

я полагаю, что ключевой секрет к наличию этой работы состоял в том, чтобы реструктурировать вывод сборки, поскольку пакет Python вместо того, чтобы пытаться иметь установку использует вывод сборки по умолчанию в качестве сценария Python.

1
ответ дан 30 November 2019 в 22:55
поделиться
Другие вопросы по тегам:

Похожие вопросы: