Размер процесса на UNIX

jaraco дал довольно аккуратный ответ. Мне нужно было исправить некоторые незначительные вещи, но это работает:

Код

# Your custom class
class MyCustom(object):
    def __json__(self):
        return {
            'a': self.a,
            'b': self.b,
            '__python__': 'mymodule.submodule:MyCustom.from_json',
        }

    to_json = __json__  # supported by simplejson

    @classmethod
    def from_json(cls, json):
        obj = cls()
        obj.a = json['a']
        obj.b = json['b']
        return obj

# Dumping and loading
import simplejson

obj = MyCustom()
obj.a = 3
obj.b = 4

json = simplejson.dumps(obj, for_json=True)

# Two-step loading
obj2_dict = simplejson.loads(json)
obj2 = MyCustom.from_json(obj2_dict)

# Make sure we have the correct thing
assert isinstance(obj2, MyCustom)
assert obj2.__dict__ == obj.__dict__

Обратите внимание, что нам нужно выполнить два шага для загрузки. На данный момент свойство __python__ не используется.

Насколько это распространено?

Используя метод AlJohri , я проверяю популярность подходов:

Сериализация (Python -> JSON):

Дезициализация (JSON -> Python):

26
задан CloudyMarble 7 February 2013 в 13:11
поделиться

3 ответа

Точные определения vsize, rss, rprvt, rshrd и других малоизвестных сокращений варьируются от ОС к ОС. Страницы справочника по командам top и ps будут иметь какое-то описание, но все такие описания значительно упрощены (или основаны на давно потухших реализациях ядра).
«Размер процесса», как концепция, трудно определить в общем случае. Ответы в конкретных случаях в значительной степени зависят от фактической реализации управления памятью в ОС и редко бывают настолько же удовлетворительными, как концепция аккуратного «размера процесса», существующая в умах большинства пользователей (и большинства разработчиков).

Например, ни одно из этих чисел (и, вероятно, ни одна их комбинация) не может быть использовано, чтобы точно сказать, сколько таких процессов может выполняться одновременно при заданном объеме свободной памяти. Но на самом деле, вам лучше всего прийти к этому с этой целью: зачем вам этот номер и для чего он будет использоваться? Учитывая эту информацию, я думаю, вы получите более полезные ответы.

17
ответ дан tzrm 28 November 2019 в 07:53
поделиться

На Солярисе можно получить подробную информацию об использовании памяти процесса с эти pmap команда. В частности, pmap -x <pid> шоу Вы, сколько из памяти процесса совместно используется и сколько конкретно используется тем процессом. Это полезно для разработки "крайнего" использования памяти процесса - с этой техникой, можно избежать, чтобы двойной подсчет совместно использовал библиотеки.

5
ответ дан mauris 28 November 2019 в 07:53
поделиться

Да, Вы правы заблокировать в VSZ.

ps u даст Вам VSZ и RSS, которые являются размером размера и резидентного набора виртуальной памяти. RSS - то, сколько физической памяти было выделено процессу, и VSZ является размером виртуальной памяти процесса. Если у Вас будет несколько копий выполнения программы, большая память в VSZ будет совместно использована теми процессами.

4
ответ дан mauris 28 November 2019 в 07:53
поделиться
Другие вопросы по тегам:

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