Я разрабатываю приложение в Python на Ubuntu, и я запускаю внешние двоичные файлы изнутри python с использованием подпроцесса. Поскольку эти двоичные файлы генерируются во время выполнения и могут быть изгоями, мне нужно сохранить строгую вкладку относительно объема памяти и времени выполнения этих двоичных файлов. Есть ли способ ограничить или контролировать использование памяти этих двоичных программ во время выполнения? Я бы очень ненавидел использовать для этого в подпроцессе что-то вроде ps.Проверьте использование памяти подпроцесса в Python
ответ
Имея номер PID вашего подпроцесса, вы можете прочитать всю информацию от proc file-system. Использование:
/Proc/[PID]/smaps (с Linux 2.6.14) Этот файл показывает объем памяти для каждого из отображений процесса. Для каждого из отображений существует ряд линий следующим образом:
или
/Proc/[PID]/statm Содержит информацию об использовании памяти, измеряется в страницах.
В качестве альтернативы вы можете ограничить ресурсы, которые подпроцесс может aquire с:
subprocess.Popen('ulimit -v 1024; ls', shell=True)
Когда данный предел виртуальной памяти достигается процесс терпит неудачу с из памяти.
Вы можете использовать модуль resource Python, чтобы установить лимиты перед тем, как развернуть свой подпроцесс.
Для мониторинга resource.getrusage() предоставит вам сводную информацию по всем вашим подпроцессам; если вы хотите просмотреть информацию о каждом подпроцессе, вы можете сделать трюк/proc в этом другом комментарии (не переносимый, но эффективный) или сложить программу Python между каждым подпроцессом и выяснить, какое сообщение (переносное, уродливое, умеренно эффективное).
благодарит Хабби, это именно то, что мне нужно. – Neo
- 1. Использование подпроцесса python
- 2. использование подпроцесса в web2py
- 3. Использование подпроцесса с openssl в скрипте python
- 4. Использование подпроцесса с fab в python
- 5. Использование подпроцесса с функцией?
- 6. Использование памяти в python
- 7. Проверьте, удалось ли выполнить ping с использованием подпроцесса в python
- 8. Использование подпроцесса python с загрузкой модуля
- 9. Использование команды dd через модуль подпроцесса Python
- 10. Использование труб с модулем подпроцесса python
- 11. Python 3: Использование подпроцесса Вместо os.system
- 12. Проверьте максимальное использование памяти программы Python под Windows
- 13. ошибка подпроцесса в python
- 14. ошибка подпроцесса в python
- 15. Изоляция подпроцесса в Python
- 16. Безопасность подпроцесса Python
- 17. Использование памяти python-списка
- 18. Использование подпроцесса для получения вывода
- 19. Python VIRT Использование памяти
- 20. Использование памяти класса Python
- 21. Python - использование памяти
- 22. Использование аномальной памяти в Python
- 23. Использование подпроцесса по опции Popen
- 24. Проверьте использование основной памяти командой linux
- 25. Использование подпроцесса и pkexec
- 26. Использование подпроцесса в файлах python в файле не найден
- 27. Анализ вывода подпроцесса при выполнении и очистке памяти (Python 2.7)
- 28. Параметр возврата подпроцесса Python
- 29. Недопустимый синтаксис подпроцесса Python
- 30. Подпроцесс подпроцесса Python
Мне нужно реализовать это изнутри Python. Поэтому мне нужно было бы развить дочерний процесс и одновременно запустить цикл while, который сохраняет файл мониторинга/proc/(pid)/smaps. Нет другого пути, например: я могу выделить фиксированную память для дочернего подпроцесса? Я надеялся каким-то образом использовать диспетчер памяти python. – Neo
Данг, никогда не думал об этом. Да, это должно работать отлично для меня. – Neo
ulimit устарел. Excerpt from man page: «Warning: эта процедура устарела. Вместо этого используйте getrlimit (2), setrlimit (2) и sysconf (3)». – omikron