Страницы

Поиск по вопросам

пятница, 20 декабря 2019 г.

Как заставить прогамму на python работать в фоновом режиме?

#python


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


Ответы

Ответ 1



Отдельный процесс -- вам смотреть либо на модуль threading, либо multiprocessing. Вы вовсе не обязаны все данные хранить в памяти, а если речь идёт о строковых ресурсах вы вполне можете привлечь модуль ziplib, либо записывать и считывать данные из файла порциями. Если читаете из файла -- можете хранить zip-файл в памяти -- модуль mmap вам в помощь. Привлечение расширения cython поможет вам сократить потребление памяти в 5-8 раз, и ускорит ваши вычисления в 5-140 раз. Убедительная просьба: дублируйте ваши комментарии на русском языке. Не используйте сложные специфические конструкции. Не грешите скрытым атрибутами (они используются по другому). pyPC на гитхабе

Ответ 2



@Montreal, вы можите очень просто значительно сократить использование памяти при помощи механизма слотов. По сути вам нужно добавить всего одну сточку: class AHuman( object ): __slots__ = ( '__sex_genes', '__mag_genes', ... ) ... В вашем случае, это должно сократить потребление памяти раз в 5.

Ответ 3



@Montreal, с процессором и фоном особых проблем, думаю, нет nohup nice your-prog args & (см. man nohup, man nice) должно вполне подойти, если программа не интерактивная. А вот с памятью сложнее (конечно, можно взлянуть на ulimit в bash). Что именно Вы хотите ограничить, и собственно, что должно произойти при превышении ограничений?

Комментариев нет:

Отправить комментарий